Maven 来自itext的jasper报告中的依赖项错误
从昨天开始,由于iText jar,我在使用maven编译时遇到了问题。 我的项目依赖于jasperreports-2.0.1,它依赖于itext-1.02b或更高版本Maven 来自itext的jasper报告中的依赖项错误,maven,jar,jasper-reports,dependencies,itext,Maven,Jar,Jasper Reports,Dependencies,Itext,从昨天开始,由于iText jar,我在使用maven编译时遇到了问题。 我的项目依赖于jasperreports-2.0.1,它依赖于itext-1.02b或更高版本 <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>[1.02b,)</version> <
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>[1.02b,)</version>
<scope>compile</scope>
</dependency>
我看到Amedee Van Gasse的一条评论,说了一些关于没有jar的4.2.2版本的事情
为什么1.02b版本附加到4.2.2
编辑:
Jasper reports使用开放版本范围:
[1.02b,]
该范围要求maven获取库的最新版本
from iText添加了没有jar的新版本Pom,并将maven central的maven元数据编辑为没有jar版本会导致编译崩溃,这取决于最新的com.lowagie库
从…m2\repository\com\lowagie\itext本地更新maven-metadata-central.xml(以及其他元数据,如果您的公司拥有自己的nexus.public)
暂时解决,直到iText更新元数据,或者所有依赖其最新版本的公司都会更新其pom
<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>
com.lowagie
文字
4.2.1
4.2.1
0.99
1.1.4
1.02b
1.2.3
1.3
1.3.1
1.4
1.4.8
2.0.1
2.0.6
2.0.7
2.0.8
2.1.0
2.1.2
2.1.3
2.1.4
2.1.5
2.1.7
4.2.0
4.2.1
20150709153501
我们也遇到了同样的问题。为了解决这个问题,我们删除了Maven配置的代理参数,并更改了Maven metadata central的最新版本(位于存储库的com\lowagie\itext文件夹中)
一个糟糕的解决方案,但暂时有效:/问题确实存在于jasper的POM报告中:
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>[1.02b,)</version>
<scope>compile</scope>
</dependency>
或者只是:
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
<scope>compile</scope>
</dependency>
com.lowagie
该页面充满了关于始终为依赖项使用最新版本的警告。这会降低构建的可复制性
2.1.7
是iText Group NV公司(或其合法前身)发布的iText的最后一个版本,带有com.lowagie
groupId。iText Group NV公司发布的下一个版本是5.0.0
,带有com.itextpdf
groupId,这意味着它与您当前的代码二进制不兼容。还有一个问题是对AGPL进行许可证更改,但这超出了StackOverflow的范围,我想把我的回答限制在技术问题上
任何介于2.1.7
和5.0.0
之间的iText的其他版本,如4.2.0
和4.2.1
,都是其他公司的分支。根据Apache关于将工件上载到中央存储库的指南(),这些公司应该使用不同的groupId,正如页面在其常见问题中明确指出的那样:
我在foo.com上开发了一个补丁版本的foo项目,什么
我应该使用groupId吗?当您修补/修改第三方项目时,
该修补版本将成为您的项目,因此应
在您控制的groupId下分发,就像您拥有的任何项目一样
已开发,从不在com.foo下使用。请参见上述关于
groupId
博士
如果您不想更改代码,请告诉您的Maven只获取iText 2.1.7。我在使用Maven 2.2.1时也遇到同样的问题,我使用Maven 3.2.3及其作品重新构建了我的项目
您必须使用Maven 3来解决问题,此版本中的错误似乎已得到解决。一个更简单的解决方案可能是升级到较新版本的jasperreports
。版本6.1.0
依赖于iText:
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7.js2</version>
<scope>compile</scope>
</dependency>
com.lowagie
对于完整的pom.xml
我们决定维护相同的jasperreport版本,并在冲突的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>
jasperreports
jasperreports
2.0.1
com.lowagie
文字
com.lowagie
文字
2.1.7
...
编辑:将dependecy更改为2.1.7,以确保它将在将来编译Jasperrorts使用一些错误修复修补了iText。因此,您必须在pom/gradle文件中添加修补的iText repo[1]
[1]
下面是gradle片段,供您在使用jasper report 6.1.1时参考。
存储库{
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
我得到了以下生成错误:
>找不到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'
}
2k19中搜索者的答案
人工制品:
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
com.lowagie
文字
现在已弃用
最好从jasperreports中排除它,并手动添加新的itext依赖项
<dependency>
<groupId>jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.10.0</version> <!--(or higher)-->
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version> <!--(or higher)-->
</dependency>
jasperreports
jasperreports
6.10.0
com.lowagie
文字
com.itextpdf
itextpdf
5.5.13
我对一些遗留代码进行了维护,我遇到了同样的问题。我找到的解决方案是将以下内容添加到pom.xml:
<repositories>
<repository>
<id>jasper-3rd-party</id>
<name>Jasper3rdParty</name>
<url>http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.12.2</version>
</dependency>
<!-- More dependencies like: commons-collections4, org.apache.xmlgraphics, etc -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7.js4</version>
</dependency>
</dependencies>
贾斯珀第三方
贾斯珀第三党
http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/
net.sf.jasperreports
jasperreports
6.12.2
com.lowagie
文字
2.1.7.js4
用于测试此代码的JasperReports版本于2020年3月发布。希望这有帮助!对我来说,“修复”是从JasperReports版本5.5.0切换到4.5.1 LOL。(这不依赖于itext)
然后它就不依赖于自定义的、看似未发布的依赖项版本的itext(在我的例子中是2.1.7.js2)
<dependency>
<groupId>jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.10.0</version> <!--(or higher)-->
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version> <!--(or higher)-->
</dependency>
<repositories>
<repository>
<id>jasper-3rd-party</id>
<name>Jasper3rdParty</name>
<url>http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.12.2</version>
</dependency>
<!-- More dependencies like: commons-collections4, org.apache.xmlgraphics, etc -->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7.js4</version>
</dependency>
</dependencies>