2017-04-26 5 views
1

私の単純なグラデルビルドでShadowJarとProGuardを併用したいと思います。私はfound examplesを持っています。ここでshadowJarタスクの出力はproguardの入力ですが、私の場合は最初に小さな難読化されたjarファイルを作成してライブラリの依存関係をうまく指定し、proguardを私のコードとし、fatjarパッケージのshadowjarプラグインに渡したいと思います。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出力は、難読化されていないすべてのライブラリ(ファイン)、私の難読化コード(罰金)と私の難読化されていないコードが含まれていることです:

私のセットアップは以下の通りです。だから、どういうわけか元のクラスが忍び寄って、私はそれがどうなっているのか見ていない。依存関係とproguard出力jarを一緒にパッケージ化するためにshadowJarを指定することはできません。

私のアプローチでどこが問題になっていますか?

答えて

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ファイルに加えて、あなたの「メイン」のsourceSetを取ることです。独自のカスタム 'shadowJar2'タスクを定義することで、ソースを明示的に定義しています。この場合、ソースセットではなくjars( 'obfuscate' + 'embed')のみです。

関連する問題