Proguard在Spring架构后端应用

171 阅读1分钟

网上大多能找到的关于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.artifactId{project.artifactId}-{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