2017-04-26 206 views
1

在我简单的gradle构建中我想将ShadowJar和ProGuard一起使用。我有found examples其中shadowJar任务的输出是proguard的输入,它工作正常,但在我的情况下,我宁愿首先创建小的混淆jar,我很好地指定库依赖关系并获得proguard只关注于我的代码,然后我想将它传递给shadowjar插件以用于fatjar包装。Gradle 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

试试这个,对我的作品:

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除了混淆+库罐子。通过定义你自己定制的'shadowJar2'任务,你明确地定义了你的源代码,在这个例子中只有jars('obfuscate'+'embed')而不是源代码集。