本文最后更新于:2025年2月18日 下午
一、流程
1、引入插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| <build> <plugins> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.5.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <obfuscate>true</obfuscate> <options> <option>-target 1.8</option> <option>-dontshrink</option> <option>-dontoptimize</option> <option>-dontskipnonpubliclibraryclasses</option> <option>-dontskipnonpubliclibraryclassmembers</option> <option>-dontusemixedcaseclassnames</option>
<option>-allowaccessmodification</option> <option>-useuniqueclassmembernames</option> <option>-keeppackagenames</option>
<option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option> <option>-keepclassmembers public class * {void set*(***);*** get*();}</option> <option>-keepclassmembers public class * { @org.springframework.context.annotation.Bean *; }</option>
<option>-keep class com.czy.echat.EchatApplication { public static void main(java.lang.String[]); }</option> <option>-keep class com.czy.echat.model.**{*;}</option> <option>-keep class com.czy.echat.dao.**{*;}</option> <option>-keep class com.czy.echat.demo.**{*;}</option> <option>-keep @org.aspectj.lang.annotation.Aspect class *{*;}</option> <option>-ignorewarnings</option> <option>-dontnote</option> </options> <libs> <lib>${java.home}/lib/rt.jar</lib> </libs> <injar>${project.build.finalName}.jar</injar> <outjar>${project.build.finalName}.jar</outjar> <outputDirectory>${project.build.directory}</outputDirectory> </configuration> <dependencies> <dependency> <groupId>com.guardsquare</groupId> <artifactId>proguard-base</artifactId> <version>7.2.1</version> </dependency> </dependencies> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.6.RELEASE</version> <configuration> <mainClass>com.czy.echat.EchatApplication</mainClass> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
|
2、修改启动类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.czy.echat;
import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.AnnotationBeanNameGenerator; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
@SpringBootApplication public class EchatApplication {
public static void main(String[] args) { new SpringApplicationBuilder(EchatApplication.class) .beanNameGenerator(new UniqueBeanNameGenerator()) .run(args); }
public static class UniqueBeanNameGenerator extends AnnotationBeanNameGenerator {
@Override protected String buildDefaultBeanName(BeanDefinition definition) { return definition.getBeanClassName(); } }
}
|
需要将路径改为自己项目的
刷新Maven依赖,成功引入插件后,即可打包测试。
二、注意事项
1、代码混淆插件必须在Maven
打包插件之前!
2、代理切点类的切点类路径不要混淆!
三、参考资料
https://www.cnblogs.com/strongmore/p/18026443#autoid-2-3-0