在我简单的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打包在一起。
你看到我的方法出现问题了吗?
答案 0 :(得分:0)
试试这个,对我有用:
task shadowJar2( type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar ) {
baseName = jar.baseName
from obfuscate
configurations = [project.configurations.embed]
classifier = 'shadow'
//version =
}
问题是默认的shadowJar任务需要你的主要任务。 sourceset除了混淆+库jar之外。通过定义自己的自定义' shadowJar2'任务,您明确定义了您的来源,在这种情况下只是jars(' obfuscate' +' embed')而不是源集。