java - 在 distZip Gradle 任务中防止 jar 重复

标签 java gradle jar

我有一个 Gradle 项目,它具有来自不同存储库(mavenCentraljcenter)的大量依赖项。成功执行 distZip 任务并检查 zip 存档后,我发现某些 jar 在 lib 文件夹中重复:

  1. bcprov-jdk14-1.38.jar 和 bcprov-jdk14-138.jar
  2. 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/

相关文章:

java - 下面的代码返回给定的数字是否为 2 的幂。它是如何工作的?

android - 应用插件 : 'android' or apply plugin: 'com.android.application'

java - Gradle -compileTestGroovy 无法解析主应用程序类

java - 如何将文件夹变成 jar - 代码

intellij-idea - 如何在intellij中添加junit.jar?

java - 计算一个数字的最大最佳面额组合

java - 如何动态替换特定值的子字符串?

java - 如何使 box2dlights 中的对象不受光线影响?

java - 生成 “build”文件夹下的文件,不应对其进行编辑

java - 如何在 Eclipse Java 项目中自动生成 .jar 文件