2014-12-31 59 views
1

我正在使用Gradle構建JavaFX應用程序。我一直遇到的問題是META-INF/LICENSE的「重複輸入」錯誤。JavaFX Gradle構建錯誤,java.util.zip.ZipException:重複項:META-INF/LICENSE

我的jar包含了對Amazon AWS SDK的依賴,所以我假設這個錯誤是由此產生的。對於這一點,我已經找到了解決辦法如下所述:

Duplicate Zip Entry after Gradle Plugin v0.13.1

它描述了我確切的問題,但只是在Android的搖籃的情況下。

具體地,溶液是:

android.packagingOptions { 
    pickFirst 'META-INF/LICENSE.txt' 
} 

當然,這樣的選擇是在搖籃明顯不存在。我的問題:有沒有一種簡單的方法可以在構建代碼中解決這個問題,而不必手動查找和刪除重複的META-INF/LICENSE事件?

爲了完整起見,這裏的錯誤gradle這個組合產生:

Caused by: java.util.zip.ZipException: duplicate entry: META-INF/LICENSE 
    at com.sun.javafx.tools.packager.PackagerLib.copyFromOtherJar(PackagerLib.java:1409) 
    at com.sun.javafx.tools.packager.PackagerLib.jar(PackagerLib.java:1366) 
    at com.sun.javafx.tools.packager.PackagerLib.packageAsJar(PackagerLib.java:288) 
    ... 54 more 

而且我gradle.build腳本:

apply from: 'javafx.plugin' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile ('com.amazonaws:aws-java-sdk:1.9.13') { 
     exclude group: 'commons-io', module: 'commons-io' 
    } 
    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

jar { 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    manifest { 
     attributes 'Main-Class': 'com.buddyware.treefrog.Main' 
    } 
} 
+1

嘗試在'jar'任務配置中添加'duplicatesStrategy'exclude''。 –

+0

賓果!添加duplicateatesStrategy(DuplicatesStrategy.EXCLUDE)爲我解決了它。謝謝! –

回答

1

基於馬克·維埃拉的建議和活生生的實例小挖,我修改我的build.gradle文件的jar任務如下:

jar { 
    duplicatesStrategy(DuplicatesStrategy.EXCLUDE) 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    manifest { 
     attributes 'Main-Class': 'com.buddyware.treefrog.Main' 
    } 
} 

運行'gradle組裝「成功沒有投訴!

相關問題