在应用程序代码上运行proguard会搞乱单元测试

时间:2013-08-29 10:18:03

标签: java maven obfuscation proguard

我试图用proguard-maven-plugin来混淆main中的代码(参见下面的项目结构)。混淆似乎工作正常,但是当我到达测试阶段时,我得到编译错误,因为测试类从来不是混淆的一部分。

主/ JAVA / com.foo.bar.HelloWorld.java

测试/ 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>

问题是我必须指向运行proguard的jar或文件夹。在这种情况下,我指向我的classes文件夹。问题是我在不同的文件夹中有测试类:test-classes。因此,HelloWorld.java将成为A.java,测试代码不知道这一点,无法编译。

我该如何处理这个问题?我想我仍然希望我的测试类在一个单独的文件夹中。而且我不想配置proguard以保留测试中使用的所有文件,因为有代码我想要混淆和测试。

提前致谢!

0 个答案:

没有答案