简介
ProGuard是一个开源的Java代码混淆器,下载ProGuardGui工具。
Maven Spring Boot ProGuard
<build> <finalName>${artifactId}</finalName> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.11</version> <executions> <execution> <!-- 混淆时刻,这里是打包的时候混淆--> <phase>package</phase> <goals> <!-- 指定使用插件的混淆功能 --> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <proguardVersion>6.2.2</proguardVersion> <injar>${project.build.finalName}.jar</injar> <outjar>${project.build.finalName}.jar</outjar> <!-- 开启混淆 --> <obfuscate>true</obfuscate> <options> <!-- 忽略所有警告,否则有警告的时候混淆会停止 --> <option>-ignorewarnings</option> <!-- 不做收缩(删除注释、未被引用代码)--> <option>-dontshrink</option> <!-- 不做优化(变更代码实现逻辑)--> <option>-dontoptimize</option> <!-- 优化时允许访问并修改有修饰符的类和类的成员 --> <option>-allowaccessmodification</option> <!-- 确定统一的混淆类的成员名称来增加混淆 --> <option>-useuniqueclassmembernames</option> <!-- 不混淆非公用类文件及成员 --> <option>-dontskipnonpubliclibraryclasses</option> <option>-dontskipnonpubliclibraryclassmembers</option> <!-- 该选项将用新的类名替换反射方法调用中的所有字符串。例如,调用Class.forName('className')--> <option>-adaptclassstrings</option> <!-- 此选项会将所有原始方法参数保存在-keep节中定义的文件中,否则所有参数名称都将被混淆。--> <option>-keepparameternames</option> <!-- 不混淆所有特殊的类--> <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option> <!-- 自定义需要混淆的地方 --> <!-- 1.首先混淆自己项目下所有文件内容 --> <option>-keep class !com.kancy.demo.springbootproguard.** { *; }</option> <!-- 2.排除不需要混淆的文件内容 --> <option>-keep class com.kancy.demo.springbootproguard.SpringBootProguardApplication { *; }</option> <option>-keep class com.kancy.demo.springbootproguard.entity.* { *; }</option> <option>-keep interface * extends * { *; }</option> <option>-keep class com.kancy.demo.springbootproguard.service.impl.HelloServiceImpl { public void init(); public void destroy(); } </option> <option>-keepclassmembers class * { @org.springframework.beans.factory.annotation.Value *; } </option> </options> </configuration> <dependencies> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard-base</artifactId> <version>6.2.2</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
资料参考
来源:https://www.cnblogs.com/kancy/p/12232956.html