maven中添加proguard来混淆代码 转

来源:http://blog.csdn.net/zhangjianying/article/details/7939593

想在现有的web工程中打包部分类的时候进行代码混淆。由于采用的是maven来管理所以google了一把发现已经有类似插件了。只要下回插件并添加相应的配置文件即可。本文仅是做下相关记录

 

1.修改pom.xml添加插件

<plugin>  
            <groupId>com.pyx4me</groupId>  
            <artifactId>proguard-maven-plugin</artifactId>  
            <executions>  
                <execution>  
                    <phase>package</phase>  
                    <goals>  
                        <goal>proguard</goal>  
                    </goals>  
                </execution>  
            </executions>  
            <configuration>  
                <obfuscate>true</obfuscate>  
                <proguardInclude>${basedir}/proguard.conf</proguardInclude>  
                <!-- 添加依赖,这里你可以按你的需要修改 -->  
                <libs>                           
                    <lib>${java.home}/lib/rt.jar</lib>  
                    <lib>lib/fcexporter_jdk1.5.jar</lib>  
                    <lib>lib/fcexporthandler.jar</lib>    
                    <lib>lib/jsp-api.jar</lib>  
                    <lib>lib/servlet-api.jar</lib>  
                </libs>  
                <addMavenDescriptor>false</addMavenDescriptor>  
            </configuration>  
            <dependencies>   
                <!-- 使用4.8版本来混淆 -->  
                <dependency>  
                    <groupId>net.sf.proguard</groupId>  
                    <artifactId>proguard</artifactId>  
                    <version>4.8</version>  
                    <scope>runtime</scope>  
                </dependency>  
            </dependencies>  
              
        </plugin>   

2.在pom.xml平级目录下添加proguard.conf文件

# ----------------------------------  
#  通过指定数量的优化能执行  
#  -optimizationpasses n  
# ----------------------------------  
-optimizationpasses 3  
  
# ----------------------------------  
#   混淆时不会产生形形色色的类名   
#   -dontusemixedcaseclassnames  
# ----------------------------------  
-dontusemixedcaseclassnames  
# ----------------------------------  
#      指定不去忽略非公共的库类  
#  -dontskipnonpubliclibraryclasses  
# ----------------------------------  
#-dontskipnonpubliclibraryclasses  
  
# ----------------------------------  
#       不预校验  
#    -dontpreverify  
# ----------------------------------  
# -dontpreverify  
  
# ----------------------------------  
#      输出生成信息  
#       -verbose  
# ----------------------------------  
-verbose  
  
#混淆时应用侵入式重载   
-overloadaggressively   
   
#优化时允许访问并修改有修饰符的类和类的成员   
-allowaccessmodification  
#确定统一的混淆类的成员名称来增加混淆   
-useuniqueclassmembernames  
  
  
  
#这里添加你不需要混淆的类  
  
-keep  class com.zsoftware.common.cache.** {*;}   
-keep  class com.zsoftware.common.constant.** {*;}   
-keep  class com.zsoftware.common.dwr.** {*;}   
-keep  class com.zsoftware.common.servelt.** {*;}   
-keep  class com.zsoftware.common.util.** {*;}   
-keep  class com.zsoftware.Component.** {*;}   
-keep  class com.zsoftware.interfacepkg.** {*;}   
-keep  class com.zsoftware.model.** {*;}   
-keep  class com.zsoftware.view.** {*;}   
-keep  class com.zsoftware.webResource.** {*;}   
  
-keep public class * extends  javax.servlet.Servlet  
   
-keepdirectories  **  
-keepattributes **  
   
  
#-keepnames class * implements java.io.Serializable  
# ---------保护所有实体中的字段名称----------  
-keepclassmembers class * implements java.io.Serializable {  
    <fields>;  
}  
  
# --------- 保护类中的所有方法名 ------------  
-keepclassmembers class * {  
    public <methods>;  
}  

3.通过 mvn package 打包 就会发现打出的结果包已经混淆

posted @ 2013-09-09 01:09  fenglie  阅读(2356)  评论(0)    收藏  举报
版权所有,转载声明