我使用Gradle构建JavaFX应用程序。我一直遇到的问题是一个重复的条目" META-INF / LICENSE的错误。
我的jar包含对Amazon AWS SDK的依赖,因此我假设错误是由此生成的。到目前为止,我已经找到了如下所述的解决方案:
Duplicate Zip Entry after Gradle Plugin v0.13.1
描述了我的确切问题,但仅限于Android Gradle。
具体来说,解决方案是:
android.packagingOptions {
pickFirst 'META-INF/LICENSE.txt'
}
当然,Gradle中明显缺少这样的选项。我的问题:是否有一种直接的方法可以在构建代码中解决此问题,而不必手动查找并删除重复的META-INF / LICENSE事件?
为了完整性,这里的错误gradle assemble生成:
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'
}
}
答案 0 :(得分:1)
根据Mark Vieira的建议和对实例的一些挖掘,我修改了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 assemble'成功而没有投诉!