我有一个 Gradle 项目,它具有来自不同存储库(mavenCentral
、jcenter
)的大量依赖项。成功执行 distZip
任务并检查 zip 存档后,我发现某些 jar 在 lib
文件夹中重复:
- bcprov-jdk14-1.38.jar 和 bcprov-jdk14-138.jar
- bcmail-jdk14-1.38.jar 和 bcmail-jdk14-138.jar
Jar 元组具有相同的大小和内容。
我想发生这种情况是因为在不同的存储库中这些依赖项具有不同的文件名。
执行 distZip
任务时,如何防止 zip 文件中的 jar 重复?它可能是 distZip 任务的默认功能或某些启用选项吗?
作为一种解决方法,我相信我可以编写某种 distZip
任务处理程序和“挤压”依赖项 jar 元组(可能有两个、三个或更多副本),以便使用一些 Groovy 脚本仅留下一个,但我想知道这是默认解决方案吗?
最佳答案
如 https://stackoverflow.com/a/21315957/1828296 中所述,我发现依赖项对 Bouncy caSTLe 库具有传递依赖关系 - 它是 com.lowagie:itext
- 通过发出 gradle dependency
并按 1.38
搜索和 138
值。
然后我像这样排除了这种依赖关系:
compile ('com.lowagie:itext:2.1.7+') {
排除组:“bouncycaSTLe”
}
还添加了最新的 Bouncy CaSTLe 版本:
编译 'org.bouncycaSTLe:bcprov-jdk15on:1.54+'
编译 'org.bouncycaSTLe:bcmail-jdk15on:1.54+'
编译 'org.bouncycaSTLe:bctsp-jdk15on:1.46+'
在 distZip
之后,没有旧版本或双 jar - 只有现代版本。
关于java - 在 distZip Gradle 任务中防止 jar 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38515113/