在我简单的gradle构建中,我想一起使用ShadowJar和ProGuard。我有found examples其中shadowJar任务的输出是proguard的输入,它工作正常,但在我的情况下,我宁愿首先创建小的混淆jar首先我很好地指定库依赖项并获得proguard只关注我的代码,然后我想将它传递给fatjar包装的shadowjar插件。
我的设置如下:
task obfuscate(type: proguard.gradle.ProGuardTask) {
injars jar
outjars "build/libs/foo-${project.version}-pg.jar"
...
}
shadowJar {
from obfuscate
configurations = [project.configurations.embed]
}
shadowJar.dependsOn obfuscate
我的问题是shadowJar输出包含所有未经模糊处理的库(精),我的混淆代码(精细)和我的未经模糊处理的代码。所以不知何故,原来的课程潜入,我不知道这是怎么回事。我无法指定shadowJar将依赖项和proguard输出jar打包在一起。
你看到我的方法中的问题在哪里?
试试这个,对我有用:
task shadowJar2( type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar ) {
baseName = jar.baseName
from obfuscate
configurations = [project.configurations.embed]
classifier = 'shadow'
//version =
}
问题是默认的shadowJar任务除了模糊的+库jar之外还需要你的'main'源集。通过定义您自己的自定义'shadowJar2'任务,您明确定义了源,在这种情况下只是jar('obfuscate'+'embed')而不是源集。