2

ライブラリをProGuardで難読化し、次のコードを次のコードに追加したいと思いますpom.xml

<build>
    <plugins>
        ...
        <plugin>
            <groupId>com.pyx4me</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>proguard</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <options>
                    <option>-allowaccessmodification</option>
                    <option>-keep class mypackage.AbstractSimulationFacadeTest</option>
                </options>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                </libs>
            </configuration>
        </plugin>
    </plugins>
</build>

mypackage.AbstractSimulationFacadeTestで定義されたクラスsrc/test/javaです。単体テストで使用されます。

実行するmvn installと、ProGuardはクラスが見つからないと文句を言いますmypackage.AbstractSimulationFacadeTest

[proguard] Note: the configuration refers to the unknown class 'mypackage.AbstractSimulationFacadeTest'
[proguard] Note: there were 1 references to unknown classes.
[proguard]       You should check your configuration for typos.
[proguard] Error: The output jar is empty. Did you specify the proper '-keep' options?

行を削除すると

<option>-keep class mypackage.AbstractSimulationFacadeTest</option>

実行すると、 formvn installが取得されます。ClassNotFoundErrormypackage.AbstractSimulationFacadeTest

エラーなしpom.xmlで実行されるようにファイルを変更するにはどうすればよいですか?mvn install

4

1 に答える 1

2

プロ ガード プラグインの新しいバージョンに移行してみてください。デフォルトのバージョンである 2.0.4 を使用しています。Maven をすばやく検索すると、GitHub に更新されたバージョンがあることがわかりますが、グループ ID が異なります。

<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.6</version>

これにより、ProGuard 4.8 を使用できるようになり、問題が解決される可能性があります。

また、Pro Guard docsを見ると、-keep オプションは、テスト ケースではなく、ビルドしているアーティファクト (src/main/java のコード) へのエントリ ポイントである必要があります。

最後に、ある時点で抽象的なテストケースを src/main/java から src/test/java に移動したように見えます。その場合は、mvn clean installを実行してターゲット ディレクトリをクリーンアップすることをお勧めします。Pro Guard は、プロジェクトの以前のビルドから古いクラスを見つけている可能性があります。

于 2012-11-19T20:15:49.787 に答える