网上大多能找到的关于Proguard资料非常多,但大多都是用于Android项目加固,对于后端Spring架构实用能搭成功的确非常少,本文就笔者亲测可用的springcloud环境下开发后端sdk使用Proguard过程做下笔记,不啰嗦,直接上Code。
一、pom.xml配置
com.github.wvengen
proguard-maven-plugin
2.0.11
package
proguard
true
true pg
-target 1.8 -dontshrink -dontoptimize -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -allowaccessmodification -useuniqueclassmembernames -keeppackagenames -keepdirectories -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod -keepclassmembers public class * {void set*(***);*** get*();} -keep class com.wl4g.devops.scm.client.config.*Configuration { *; } -keep class com.wl4g.devops.scm.client.configure.RefreshBean { *; } -keep class com.wl4g.devops.scm.client.configure.BeanCurrentlyConfigureAspect { *; } -keep class com.wl4g.devops.scm.client.indicator.** { *; } -keep class com.wl4g.devops.scm.client.metrics.** { *; } -keep class com.wl4g.devops.scm.client.store.** { *; } -keep class com.wl4g.devops.scm.client.utils.** { *; }{project.version}-pg.jar
${java.home}/lib/rt.jar
true
classes${project.build.directory}
二、FQA
1. Proguard混淆代码导致Spring自动装配失败?
举例说明:
这是没加“-keepdirectories”的解压输出
inflated: META-INF/MANIFEST.MF
inflated: abc/service/Service.class
inflated: test/rest/controller/Controller.class
inflated: test/rest/controller/ServiceImpl.class
inflated: META-INF/maven/test/rest/pom.xml
inflated: META-INF/maven/test/rest/pom.properties
2.加上“-keepdirectories”之后解压输出
created: META-INF/inflated: META-INF/MANIFEST.MF
created: abc/created: abc/service/
created: test/
created: test/rest/
created: test/rest/controller/
inflated: abc/service/Service.class
inflated: test/rest/controller/Controller.class
inflated: test/rest/controller/ServiceImpl.class
created: META-INF/maven/
created: META-INF/maven/test/
created: META-INF/maven/test/rest/
inflated: META-INF/maven/test/rest/pom.xml
inflated: META-INF/maven/test/rest/pom.properties
2. 执行clean install -DskipTests打包后解压jar包无maven的pom.xml文件?
增加如下配置:
true