前提:pom.xml
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sample</groupId>
<artifactId>sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<name>sample</name>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.16.0</version>
</dependency>
</dependencies>
</project>
エラーの概要
コンパイルする際にjasperreportsの依存関係がMaven3の仕様により以下のエラーでブロックされてしまいました。
com.lowagie:itext:pom:2.1.7.js8 failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: Could not transfer artifact com.lowagie:itext:pom:2.1.7.js8 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [jaspersoft-third-party (http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/, default, releases+snapshots), jr-ce-releases (http://jaspersoft.jfrog.io/jaspersoft/jr-ce-releases, default, releases+snapshots)]
Since Maven 3.8.1 http repositories are blocked.
Possible solutions:
- Check that Maven pom files do not contain http repository http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/
- Check that Maven pom files do not contain http repository http://jaspersoft.jfrog.io/jaspersoft/jr-ce-releases
- Add a mirror(s) for http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/, http://jaspersoft.jfrog.io/jaspersoft/jr-ce-releases that allows http url in the Maven settings.xml
- Downgrade Maven to version 3.8.1 or earlier in settings
どうやら外部 HTTP リポジトリをデフォルトでブロックされているとのことです。
特定のHTTPアクセスを許可する場合にはmirror設定をsetting.xmlに追記しなければいけないようなのですが、
一旦エラーが出ているリポジトリにアクセスしてみました。
すると、HTTPS接続のリポジトリにリダイレクトされたため、リポジトリ指定すればいけるんじゃね? と思いpom.xml
に以下を追記しました。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sample</groupId>
<artifactId>sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
+ <repositories>
+ <repository>
+ <id>jaspersoft-third-party</id>
+ <url>https://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
+ </repository>
+ </repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<name>sample</name>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.16.0</version>
</dependency>
</dependencies>
</project>
Mavenをリロードしたところ、正常にコンパイルできました。やったー!