我只想混淆简单的maven java应用程序。我使用maven-proguard-plugin。必须对所有类main/java进行模糊处理。我尝试了不同的配置,但没有成功。最后一个是:
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.6</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>4.10</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<configuration>
<proguardVersion>4.10</proguardVersion>
<options>
<option>-keep class *{*;}</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
</libs>
</configuration>
</plugin>
</plugins>
</build>结果-所有类都存在于目标jar中,但没有混淆,jad很好地对其进行了反编译。如何做正确的混淆?无法理解--只是混淆所有源码都是非常不常见的任务吗?所有其他插件开箱即用。为什么我必须在这个选项中输入一些奇怪的选项?我已经花了一天了。我希望约定胜过配置!:)
发布于 2014-01-22 16:12:41
Maven这样一个伟大的东西:)。你可以做出你想要的,甚至不理解的,你想要的。在我读完the introduction之后,我明白这是一个愚蠢的问题。保持参数是非常重要的。在这里,传入不能更改的公共方法。当然,插件本身并不能理解你打算使用什么方法。正确的配置:
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.6</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<configuration>
<proguardVersion>4.10</proguardVersion>
<options>
<option>-keep public class myapp.Main{public static void main(java.lang.String[]);}</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
</plugin>
</plugins>
</build>https://stackoverflow.com/questions/21275911
复制相似问题