使用带有 gradle 的混淆器创建混淆的应用程序 jar 时重复的 zip 条目
Duplicate zip entry when creating an obfuscated application jar using proguard with gradle
Java 应用程序本身不包含第三方库依赖项。如果我删除 obfuscate
任务和行 jar.finalizedBy(project.tasks.obfuscate)
,标准 jar 将构建并可运行。
错误..
* What went wrong:
Execution failed for task ':obfuscate'.
> java.io.IOException: Can't write [/Users/rob/git/repo/build/libs/tool.out.jar] (Can't read [/Users/rob/git/repo/build/libs/tool.jar] (Duplicate zip entry [com/example/cli/j.class == tool.jar:com/example/cli/HelperUtils.class]))
build.gradle
..
task obfuscate(type: proguard.gradle.ProGuardTask) {
configuration 'proguard.txt'
injars "build/libs/tool.jar"
outjars "build/libs/tool.out.jar"
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
}
jar {
archiveName = "tool.jar"
from sourceSets.main.output.classesDir
include '**/cli/*.class'
manifest {
attributes 'Main-Class': 'com.example.cli.Tool'
}
}
jar.finalizedBy(project.tasks.obfuscate)
proguard.txt
..
-keep public class com.example.cli.* {*;}
该应用程序包含 3 个 Java class 个文件..
com.example.cli.Tool (which contains the main)
com.example.cli.HelperUtils
com.example.cli.CustomEnums
向 jar
任务添加了以下内容:
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
..
}
Java 应用程序本身不包含第三方库依赖项。如果我删除 obfuscate
任务和行 jar.finalizedBy(project.tasks.obfuscate)
,标准 jar 将构建并可运行。
错误..
* What went wrong:
Execution failed for task ':obfuscate'.
> java.io.IOException: Can't write [/Users/rob/git/repo/build/libs/tool.out.jar] (Can't read [/Users/rob/git/repo/build/libs/tool.jar] (Duplicate zip entry [com/example/cli/j.class == tool.jar:com/example/cli/HelperUtils.class]))
build.gradle
..
task obfuscate(type: proguard.gradle.ProGuardTask) {
configuration 'proguard.txt'
injars "build/libs/tool.jar"
outjars "build/libs/tool.out.jar"
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
}
jar {
archiveName = "tool.jar"
from sourceSets.main.output.classesDir
include '**/cli/*.class'
manifest {
attributes 'Main-Class': 'com.example.cli.Tool'
}
}
jar.finalizedBy(project.tasks.obfuscate)
proguard.txt
..
-keep public class com.example.cli.* {*;}
该应用程序包含 3 个 Java class 个文件..
com.example.cli.Tool (which contains the main)
com.example.cli.HelperUtils
com.example.cli.CustomEnums
向 jar
任务添加了以下内容:
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
..
}