2017-04-26 247 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')而不是源代碼集。