maven配置
<build>
<finalName>${artifactId}</finalName>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<configuration>
<proguardVersion>5.3.3</proguardVersion>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}.jar</outjar>
<obfuscate>true</obfuscate>
<options>
<option>-dontshrink</option>
<option>-dontoptimize</option>
<option>-adaptclassstrings</option>
<option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option>
<option>-keepnames interface **</option>
<option>-keepparameternames</option>
<option>-keep class !com.adups.iot.web.** { *; }</option>
<option>-keep class com.adups.iot.web.Application { *; }</option>
<option>-keep class com.adups.iot.web.bean.** { *; }</option>
<option>-keep class com.adups.iot.web.common.JsonResult{*; }</option>
<option>-keep class com.adups.iot.web.conf.** { *; }</option>
<option>-keepclassmembers class com.adups.iot.web.security.MyShiro { *; }</option>
<option>-keep class com.adups.iot.web.util.ShiroUtil { *; }</option>
<option>-keep interface * extends * {*;}</option>
<option>-keep @org.springframework.stereotype.Service class *</option>
<option>-keep @org.springframework.stereotype.Controller class * {*;}</option>
<option>-keepclassmembers class * {
@org.springframework.beans.factory.annotation.Autowired *;
@org.springframework.beans.factory.annotation.Value *;
}
</option>
</options>
<libs>
<!-- Include main JAVA library required.-->
<lib>${java.home}/lib/rt.jar</lib>
<!-- Include crypto JAVA library if necessary.-->
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.3.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
<!-- Maven assembly must be run after proguard obfuscation so it take already obfuscated files.-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<mainClass>com.adups.iot.web.Application</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
建议方法:
一般先除了项目的下包,其他全部混淆
-keep class !com.adups.iot.web.* { ; }
com.adups.iot.web是我的项目package name.
-keep class com.adups.iot.web.bean.* { ; }
-keep class com.adups.iot.web.common.* { ; }
先将每个子包加入,再逐步取消.
是每一个子包.
注意:
如果找到混淆后类报错,怎么找原来的类?
从proguard_map.txt在找到映射前的类.
再取消这个类这个类或该类的方法的混淆.