解決 Gradle Fat Jar 簽章(jarsigner)的問題
2012-09-02 21:26
162 查看
转载自:http://blog.lyhdev.com/2012/02/gradle-fat-jar-jarsigner.html
Gradle 的 Cookbook 有提供一個 Fat Jar 範例,也就是除了將專案本身的 class 打包成 jar 檔外,也一併將其他相依的 jar 套件一起打包。
Create a fat jar in Gradle http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Includeallruntimedependencies
使用 ant.signjar 即可在 build.gradle 順便把 jarsigner 完成。
ant.signjar(alias: 'alias', keystore: 'keyfile', keypass: 'keypass', storepass: 'storepass', preservelastmodified: 'true', jar: "project-1.0.jar",
destDir: 'signedDir')
但如果相依套件多起來,執行 jarsigner 可能會遇到這個錯誤:
jarsigner: unable to sign jar: java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt
這是因為 jar 在打包時,並不會檢查檔案是否重複,但是 jarsigner 遇到重複的檔案就會出錯。
在 jar 的設定中加入一行 exclude 即可避免。
jar {
//...
exclude('META-INF/*.txt')
}
Gradle 的 Cookbook 有提供一個 Fat Jar 範例,也就是除了將專案本身的 class 打包成 jar 檔外,也一併將其他相依的 jar 套件一起打包。
Create a fat jar in Gradle http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Includeallruntimedependencies
使用 ant.signjar 即可在 build.gradle 順便把 jarsigner 完成。
ant.signjar(alias: 'alias', keystore: 'keyfile', keypass: 'keypass', storepass: 'storepass', preservelastmodified: 'true', jar: "project-1.0.jar",
destDir: 'signedDir')
但如果相依套件多起來,執行 jarsigner 可能會遇到這個錯誤:
jarsigner: unable to sign jar: java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt
這是因為 jar 在打包時,並不會檢查檔案是否重複,但是 jarsigner 遇到重複的檔案就會出錯。
在 jar 的設定中加入一行 exclude 即可避免。
jar {
//...
exclude('META-INF/*.txt')
}
相关文章推荐
- 解決 Gradle Fat Jar 簽章(jarsigner)的問題
- 實際上﹐解決一個問題就是在不斷的嘗試中解決問題的
- git的“Bad file number的問題解決辦法
- (原創) 如何解決在Quartus II無法使用ModelSim-Altera模擬的問題? (SOC) (Quartus II) (ModelSim)
- (原創) 如何解決TRDB-D5M CMOS在DE2 delay的問題? (SOC) (DE2) (TRDB-D5M)
- 利用 mount 指令解決 Read-only file system 問題
- 转:jmf編譯問題的解決
- HTML 資訊汲取(下篇) - TagSoup 輸出 namespace 問題的解決方案
- 解決svchost.exe 100%的問題 (真的中毒了)
- [转]解決 IE10 瀏覽器無法使用 ASP.NET 表單驗證登入的問題
- 繁體網站上發布新聞﹐亂碼的問題,不能發布簡體中心的解決方案
- ASP.Net 解決已过时問題
- (原創) 如何解決CentOS無法在VMWare內線上更新及安裝其他軟體的問題? (OS) (Linux) (CentOS) (VMWare)
- 解決WinXP任務欄“鎖定任務欄”變成灰色、不可用的問題
- 溝通是為了解決未來的問題
- ORA-28002: 密碼將在 7 天後到期之問題解決
- download excle的幾個問題的解決
- 利用List的Sort()、Find()、FindAll()、Exist()來解決一些問題
- 關於解決sqlite中加密設計方案缺陷問題