2016-07-21 27 views
1

我有一個Gradle項目,它具有來自不同存儲庫(mavenCentral,jcenter)的大量依賴關係。成功distZip任務執行和檢查一個zip壓縮文件後,我發現,某些罐子在lib文件夾複製:防止jar重複同時distZip Gradle任務

  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任務處理和「擠」的依賴關係罐子元組(其中可能有兩個,三個或更多份)使用一些Groovy的腳本只留下一個,但我想知道的是它是一個默認解決方案

+0

我目前的建議是:1)找到具有'bcmail'和'bcprov'傳遞依賴的依賴關係,特別是當它們位於不同的回購站時; 2)爲這些依賴之一添加排除指令 - 排除「bouncy castle」庫。 – lospejos

+0

像這樣的問題在這裏描述:http://stackoverflow.com/a/21315957/1828296 – lospejos

回答

1

正如https://stackoverflow.com/a/21315957/1828296說,我發現依賴具有傳遞性依賴於充氣城堡庫 - 這是com.lowagie:itext - 通過發行gradle dependencies1.38138值搜索。

然後我做了排除這種依賴關係是這樣的:

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+' distZip後沒有舊版本或罐子雙打 - 只是現代版本。