4

我试图用 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 来保留测试中使用的所有文件,因为有代码我想混淆和测试。

提前致谢!

4

0 回答 0