昨日から、iText jarのためにMavenでのコンパイルに問題があります。私のプロジェクトには、itext-1.02b以降に依存するjasperreports-2.0.1の依存関係があります。
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>[1.02b,)</version>
<scope>compile</scope>
</dependency>
それはmavenのログエラーです。
Failed to collect dependencies for [jasperreports:jasperreports:jar:2.0.1 (compile)]: Failed to read artifact descriptor for com.lowagie:itext:jar:4.2.2: Could not transfer artifact com.itextpdf:itextpdf:pom:4.2.2 from/to jaspersoft (http://www.jasperforge.org/maven2): Access denied to http://www.jasperforge.org/maven2/com/itextpdf/itextpdf/4.2.2/itextpdf-4.2.2.pom. Error code 403, Forbidden -> [Help 1]
here ジャーなしの4.2.2バージョンについて何かを言っているAmedee Van Gasseからのコメントがあります。
1.02bバージョンが4.2.2に添付されるのはなぜですか?
編集:Jasper-reportsはオープンバージョンの範囲を使用します。
[1.02b、)
この範囲は、ライブラリを最新バージョンにするためにMavenに伝えます。
pdate iTextからjarなしで新しいバージョンのPomを追加し、maven-centralのmaven-metadataをそのjarなしのバージョンに編集すると、最新のcom.lowagieライブラリに依存するすべてのjarへのコンパイルがクラッシュします。
Maven-metadata-central.xml(および会社が独自のnexus.publicを持っている場合は他のメタデータ)を... m2\repository\com\lowagie\itextからローカルに更新します。 iTextがメタデータを更新するか、依存関係を持つすべての企業が最新バージョンに更新されるまで一時的に解決します。
<metadata modelVersion="1.1.0">
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<versioning>
<latest>4.2.1</latest>
<release>4.2.1</release>
<versions>
<version>0.99</version>
<version>1.1.4</version>
<version>1.02b</version>
<version>1.2.3</version>
<version>1.3</version>
<version>1.3.1</version>
<version>1.4</version>
<version>1.4.8</version>
<version>2.0.1</version>
<version>2.0.6</version>
<version>2.0.7</version>
<version>2.0.8</version>
<version>2.1.0</version>
<version>2.1.2</version>
<version>2.1.3</version>
<version>2.1.4</version>
<version>2.1.5</version>
<version>2.1.7</version>
<version>4.2.0</version>
<version>4.2.1</version>
</versions>
<lastUpdated>20150709153501</lastUpdated>
</versioning>
</metadata>
もっと簡単な解決策は、jasperreports
の新しいバージョンにアップグレードすることです。バージョン6.1.0
には、iTextに対する次の依存関係があります。
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7.js2</version>
<scope>compile</scope>
</dependency>
ITextに対する「フローティング」依存関係はもうありません。これは、jasperreports向けにカスタマイズされたバージョンです。
完全なpom.xml
については、 http://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports/6.1. を参照してください。
同じjasperreportバージョンを維持することにし、conflicts pomでこの変更を行いました。
<dependencies>
<dependency>
<groupId>jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>2.0.1</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
...
</dependencies>
編集:dependecyを2.1.7に変更して、将来コンパイルされるようにします
JasperReportsは、iTextにいくつかのバグ修正をパッチしました。そのため、pom/gradleファイルにパッチを適用したiText repo [1]を追加する必要があります。
[1] http://jasperreports.sourceforge.net/maven2/
以下は、ジャスパーレポート6.1.1を使用する際の参考のためのgradleスニペットです。 repositories { mavenLocal() mavenCentral() maven { url "http://repo.spring.io/release" } maven { url "http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/" } maven { url "http://jasperreports.sourceforge.net/maven2/" } }
私はgradleを使用しており、現在のバージョン_6.8.2
次のビルドエラーが発生しました。> Could not find com.lowagie:itext:2.1.7.js6
そこで、http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/
リポジトリとして、今では動作します。
repositories {
mavenCentral()
maven { url "http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/" }
}
dependencies {
compile 'net.sf.jasperreports:jasperreports:6.8.0'
}
同じ問題があります。これを解決するために、Maven構成のプロキシパラメーターを削除し、maven-metadata-centralの最後のバージョン(リポジトリのフォルダーcom\lowagie\itext内)を変更しました。
悪い解決策ですが、一時的に動作します:/
Maven 2.2.1を使用するときも同じ問題があり、Maven 3.2.3とその機能を使用してプロジェクトを再構築しました。
問題を解決するにはMaven 3を使用する必要がありますが、このバージョンではバグが解決されているようです。