想在现有的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 打包 就会发现打出的结果包已经混淆