18

ProGuardをMavenビルドプロセスの一部にしようとしています。問題は、公式のMavenプラグインがJava7をサポートしないProGuard4.3を使用していることです。プラグインに代わりに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>

助言がありますか?

4

3 に答える 3

23

からproguard-maven-pluginを使用しますcom.github.wvengen。異なることに注意してください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>

更新:私のAndroidプロジェクトでは、android-maven-pluginがProGuardの難読化自体を処理し、Androidのビルドプロセスによりよく統合されているため、proguard-maven-pluginのような専用のProguardプラグインを使用していません。

于 2013-04-10T23:24:44.273 に答える
7

オリジナルのproguard-maven-pluginのフォークがあります。git-hubedです。あなたがそれをどのように行うかを見てください。

これが私たちがそれを行う方法の最新の例です。これ以上のプロファイルは必要ありません。

于 2012-07-03T12:59:38.280 に答える
5

ここで解決策を見つけました:https ://groups.google.com/forum/?fromgroups#!topic / pyx4me-users/NUZi1oySvQE 。基本的に、ProGuardをダウンロードしてローカルリポジトリにインストールする必要がありました。

于 2012-06-07T10:00:42.213 に答える