我们在我们的项目中的一个利用iText生成PDF报告,恰恰是4.2.1版,因为它是最后的免费版本。
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>4.2.1</version>
</dependency>
当我今天早上克隆的新机库,我遇到了很多编译器错误的,因为行家重定向到5.5.6版本和进口失败。在我们的研究中,我们发现,该聚甲醛,文件中的Maven中心于上周改变。从现在起,这似乎是不可能增加的jar依赖像我们以前那样。
谁能告诉我,如果还有以iText的4.2.1版本通过整合Maven的方法吗?
作为记录here,谁发表了iText的叉版本的人4.x.y没有按照the rules as explained by Apache:
我在foo.com开发的FOO项目的补丁版本,我的groupId应该用什么呢?
当您修补/修改第三方项目,该补丁版本成为您的项目,因此应该下的groupId你控制,你会发展,从来没有在任何com.foo项目分布。请参阅有关的groupId上述考虑。
他们使用的groupId,导致人们相信,他们使用的是原始版本的iText的,这是没有的情况下发表的iText的非官方版本。这个错误已经造成了很多的困惑和无奈。
要停止混乱,iText的集团已开垦的groupId所以没有第三方可以引入侵犯第三方的权利,甚至恶意软件到您的代码库(这是当你让Maven来自动升级你承担风险)软件。
你的指控iText的4.2.1是最后一个免费的版本不正确。有与之前的iText 5 iText的版本中一些严重的问题,但这是另一个讨论和会议通话在JavaOne 2015年题为IANAL: What Developers Should Know About IP and Legal的主题。
在任何情况下,最简单的解决方案是为您更改依赖关系:
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>[1.02b,2.1.7]</version>
<scope>compile</scope>
</dependency>
见this answer在回答Dependency error in jasper-reports from itext甚至更多的背景信息。
第一个解决方案
您可以在本地下载JAR,然后用下面的命令在本地安装它。
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id>
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
使用的groupId,artifactId的,版本和包装你喜欢。
在这种情况下:
mvn install:install-file -Dfile=itext.jar -DgroupId=com.lowagie
-DartifactId=itext -Dversion=4.2.1 -Dpackaging=jar
解决方法二:
您也可以在本地下载JAR及其以下依赖组引用它
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>4.2.1</version>
<scope>system</scope>
<systemPath>/PATHTOJAR/itext.jar</systemPath>
</dependency>
我用摇篮有同样的问题。
在我的build.gradle文件,根据依赖关系,
compile 'com.lowagie:itext:4.2.1'
将取itextpdf-5.5.6.jar
运行命令
gradle myapp:dependencies
会显示这样的传递依赖:
\--- com.lowagie:itext:4.2.1
\--- com.itextpdf:itextpdf:5.5.6
我的解决方案是一个副本我原来的iText-4.2.1.jar的上传到我们的Nexus存储库,并给它一个不同的版本号。