ProGuardをMavenビルドプロセスの一部にしようとしています。問題は、公式のMavenプラグインがProGuard 4.3を使用していることです。これは、Java 7をサポートしていません。代わりにプラグインにProguard4.8を使用させる簡単な方法はありますか?
プラグインの依存関係を指定しようとしましたが、ProGuardはMavenモジュール(proguard-base、proguard-parentなど)の新しい構造を持っているようです。そのため、プラグインは4.4を超えるバージョンを使用できません。これが私の現在のpomがどのように見えるかです:
<plugin>
<groupId>com.pyx4me</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardVersion>4.8</proguardVersion>
<obfuscate>true</obfuscate>
<options>
<option>-allowaccessmodification</option>
<option>-keep public class com.degoo.ui.ClientBackendStarter { public *; public static *; }</option>
</options>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-small.jar</outjar>
<outputDirectory>${project.build.directory}</outputDirectory>
<libs>
<lib>${Java.home}/lib/rt.jar</lib>
<lib>${Java.home}/lib/jsse.jar</lib>
</libs>
<addMavenDescriptor>false</addMavenDescriptor>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard</artifactId>
<version>4.8</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
助言がありますか?
ここで解決策を見つけました: https://groups.google.com/forum/?fromgroups#!topic/pyx4me-users/NUZi1oySvQE 。基本的に、ProGuardをダウンロードしてローカルリポジトリにインストールする必要がありました。
com.github.wvengen
のproguard-maven-pluginを使用しています。異なるgroupId
に注意してください。そうすれば、最新のproguard-base
アーティファクト5.0を使用できます。どちらもMavenCentralにあります。これが私のpom.xmlのproguard-base部分が今どのように見えるかです:
親pom.xml:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.8</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
[...]
これが私の子pom.xmlの残りですが、おそらくそれを変更したいと思うでしょう:
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<id>process-classes-with-proguard</id>
<phase>process-classes</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<maxMemory>256m</maxMemory>
<injar>classes</injar>
<libs>
<lib>${rt.jar.path}</lib>
<lib>${jsse.jar.path}</lib>
</libs>
<obfuscate>true</obfuscate>
<attach>true</attach>
<addMavenDescriptor>false</addMavenDescriptor>
<proguardInclude>${project.basedir}/proguard.conf</proguardInclude>
</configuration>
</execution>
</executions>
</plugin>
PDATE:私のAndroidプロジェクトでは、Android-maven-pluginがProGuardの難読化自体を処理するため、proguard-maven-pluginのような専用のProguardプラグインを使用していません。 Androidのビルドプロセスによりよく統合されています。
オリジナルのフォークがあります proguard-maven-plugin 。 git-hubed です。 どのように行うか を参照してください。
ここは私たちがそれを行う方法の最新の例です。 これ以上のプロファイルは必要ありません。