maven中添加proguard来混淆代码

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


1.修改pom.xml添加插件

	
				com.pyx4me
				proguard-maven-plugin
				
					
						package
						
							proguard
						
					
				
				
					true
					${basedir}/proguard.conf
					
											 
						${java.home}/lib/rt.jar
						lib/fcexporter_jdk1.5.jar
						lib/fcexporthandler.jar	
						lib/jsp-api.jar
						lib/servlet-api.jar
					
					false
				
				 
					
					
						net.sf.proguard
						proguard
						4.8
						runtime
					
				
				
			 

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 {
    ;
}

# --------- 保护类中的所有方法名 ------------
-keepclassmembers class * {
	public ;
}

 

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


你可能感兴趣的:(JAVA学习)