工作maven混淆的例子

cyn*_*axa 4 obfuscation proguard maven

我只是想混淆简单的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>
Run Code Online (Sandbox Code Playgroud)

结果 - 所有类都存在于目标jar中,但没有混淆,jad反编译得很好.怎么做混淆吧?无法理解 - 只是混淆所有来源都是非常罕见的任务?所有其他插件都像魅力一样开箱即用.为什么我必须在这个中键入一些奇怪的选项?我已经花了一天时间.我希望约定优于配置!:)

cyn*_*axa 9

Maven这么棒的东西:).你可以做你想要的,甚至不理解你想要的东西.在我阅读http://proguard.sourceforge.net/#manual/introduction.html后,我明白这是一个愚蠢的问题.保持参数非常重要.这里传递的公共方法一定不能改变.当然,插件本身不能解决您计划使用的方法.正确的配置:

<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>
Run Code Online (Sandbox Code Playgroud)