1. pom.xml 添加proguard插件配置
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<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>
<proguardInclude>${project.basedir}/proguard.cfg</proguardInclude> //proguard.cfg 配置文件位置
<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>
</dependency>
</dependencies>
</plugin>
2.proguard.cfg 配置文件
-target 1.8 ##指定java版本號
-dontshrink ##默認是開啟的,這里關閉shrink,即不刪除沒有使用的類/成員
-dontoptimize ##默認是開啟的,這里關閉字節碼級別的優化
-useuniqueclassmembernames ##對於類成員的命名的混淆采取唯一策略
-adaptclassstrings ## 混淆類名之后,對使用Class.forName('className')之類的地方進行相應替代
-dontusemixedcaseclassnames ## 混淆時不生成大小寫混合的類名,默認是可以大小寫混合
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod ##對異常、注解信息在runtime予以保留,不然影響springboot啟動
-keepclasseswithmembers public class * { public static void main(java.lang.String[]);} ##保留main方法的類及其方法名
-keepclassmembers enum * { *; } ##保留枚舉成員及方法
3.參考
https://www.cnblogs.com/lmq3321/p/10320671.html
https://blog.csdn.net/songluyi/article/details/79554928
4. 其他方式
-
插件名稱: proguard-maven-plugin