gpt4 book ai didi

java - 使用 ProGuard 和 Maven 混淆 Java 代码 : Test classes and ClassNotFoundError

转载 作者:行者123 更新时间:2023-11-30 09:30:06 24 4
gpt4 key购买 nike

我想用 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>

并运行 mvn install,我得到了 mypackage.AbstractSimulationFacadeTestClassNotFoundError

我应该如何更改我的 pom.xml 文件,以便 mvn install 运行时没有错误?

最佳答案

尝试移动到更新版本的 pro guard 插件。您使用的是默认版本 2.0.4。 quick search of 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 选项应该是您正在构建的 Artifact (src/main/java 中的代码)的入口点,而不是测试用例的入口点。

最后,在我看来,您似乎已将抽象测试用例从 src/main/java 移至 src/test/java。如果是这种情况,您可能需要执行 mvn clean install 来清理目标目录。 Pro Guard 可能会从项目的先前构建中找到旧类。

关于java - 使用 ProGuard 和 Maven 混淆 Java 代码 : Test classes and ClassNotFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com