Gradle ShadowJar输出包含模糊和非模糊类

问题描述 投票:1回答:1

在我简单的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打包在一起。

你看到我的方法中的问题在哪里?

gradle proguard shadowjar
1个回答
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任务除了模糊的+库jar之外还需要你的'main'源集。通过定义您自己的自定义'shadowJar2'任务,您明确定义了源,在这种情况下只是jar('obfuscate'+'embed')而不是源集。

© www.soinside.com 2019 - 2024. All rights reserved.