distZip Gradle任务时防止jar重复

时间:2016-07-21 22:05:13

标签: 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
  3. Jar元组具有相同的大小和内容。 我想这是因为在不同的存储库中这些依赖项具有不同的文件名。 执行distZip任务时,如何防止zip文件中的jar重复?它可能是distZip任务的默认功能还是启用某些选项?

    作为一种解决方法,我相信我可以编写某种distZip任务处理程序和'挤压'依赖关系jar元组(可能有两个,三个或更多副本)只留下一个使用一些Groovy脚本,但我想知道这是一个默认的解决方案吗?

1 个答案:

答案 0 :(得分:1)

正如https://stackoverflow.com/a/21315957/1828296中所述,我发现依赖关系对于Bouncy城​​堡图书馆具有传递依赖性 - 它是com.lowagie:itext - 发布gradle dependencies并按1.38和{{搜索1}}值。

然后我对这种依赖关系进行了排除:

138

还添加了最新的Bouncy Castle版本:

compile ('com.lowagie:itext:2.1.7+') { exclude group: "bouncycastle" }compile 'org.bouncycastle:bcprov-jdk15on:1.54+' compile 'org.bouncycastle:bcmail-jdk15on:1.54+' compile 'org.bouncycastle:bctsp-jdk15on:1.46+' 之后,没有旧版本或双罐装 - 只是现代版本。