我试图用 proguard-maven-plugin 混淆 main 中的代码(参见下面的项目结构)。混淆似乎工作得很好,但是当我进入测试阶段时,我得到了编译错误,因为测试类从来不是混淆的一部分。
主/java/com.foo.bar.HelloWorld.java
test/java/com.foo.bar.HelloWorldTest.java
我的 maven pom 配置如下:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.6</version>
<executions>
<execution>
<id>process-classes-with-proguard</id>
<phase>process-test-classes</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<proguardVersion>4.8</proguardVersion>
<maxMemory>256m</maxMemory>
<injar>classes</injar>
<libs>
<lib>${java.home}/../Classes/classes.jar</lib>
</libs>
<addMavenDescriptor>false</addMavenDescriptor>
<options>
<option>@proguard.cfg</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
问题是我必须指向一个 jar 或 proguard 将在其上运行的文件夹。在这种情况下,我指向我的类文件夹。问题是我在不同的文件夹中有测试类:test-classes。因此,HelloWorld.java 将变为 A.java,而测试代码不知道这一点,无法编译。
我应该如何解决这个问题?我想我仍然希望我的测试类在一个单独的文件夹中。而且我不想配置 proguard 来保留测试中使用的所有文件,因为有代码我想混淆和测试。
提前致谢!