我对Gradle有问题。我想使用外部提供的Jar:itext-2.1.7.js6.jar
,它是JasperReports使用的修补版本。
在项目结构中,我有一个/libs
目录,其中包含2个文件:fonts.jar
和itext-2.1.7.js6.jar
我的gradle.build文件的一部分看起来像这样:
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.7.1'
implementation group: 'net.sf.jasperreports', name: 'jasperreports-functions', version: '6.8.0'
implementation group: 'joda-time', name: 'joda-time', version: '2.9.9'
//implementation group: 'hu.blackbelt.bundles.itext', name: 'com.lowagie.itext', version: '2.1.7-1'
最后一个依赖项已被注释掉,因为我想使用外部JAR而不是原始的iText。
当我尝试运行我的应用程序时,我得到:
BUILD FAILED in 0s
1 actionable task: 1 executed
Could not find com.lowagie:itext:2.1.7.js6.
Required by:
project : > net.sf.jasperreports:jasperreports:6.7.1
我在做什么错?我的fonts.jar
一切都很好,所以我认为iText应该是一样的,但事实并非如此。
答案 0 :(得分:0)
在pom
file of jasperreports
中可以看到,对com.lowagie:itext:2.1.7.js6
有明确的依赖性,也可以在specific Jasper Reports repository中找到
在Maven中透明地工作的原因是Maven将使用pom
文件中定义的存储库,而Gradle将不使用它们,因为它们可能是不安全的来源。
您有两个选择:
libs
删除文件jasperreports
添加一个排除项,以便它不再尝试获取该依赖项。相反,运行时代码将使用libs
中的版本。您只是忘了这种情况下的传递依赖管理,例如,升级jasperreports
并从(或不)从其依赖声明中获取更新版本时。