赞
踩
pom.xml中添加
- <build>
- <plugins>
- <plugin>
- <groupId>com.github.wvengen</groupId>
- <artifactId>proguard-maven-plugin</artifactId>
- <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>
- <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>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- <configuration>
- <mainClass>com.example.Application</mainClass>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
pom.xml同级目录下创建proguard.cfg文件
- -target 1.8 ##指定java版本号
- -dontshrink ##默认是开启的,这里关闭shrink,即不删除没有使用的类/成员
- -dontoptimize ##默认是开启的,这里关闭字节码级别的优化
- -useuniqueclassmembernames ##对于类成员的命名的混淆采取唯一策略
- -adaptclassstrings ## 混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代
- -dontusemixedcaseclassnames ## 混淆时不生成大小写混合的类名,默认是可以大小写混合
- ##对异常、注解信息在runtime予以保留,不然影响springboot启动
- -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
- ##保留main方法的类及其方法名
- -keepclasseswithmembers public class * { public static void main(java.lang.String[]);}
- -keepclassmembers enum * { *; } ##保留枚举成员及方法
-
- ## 保持对外的接口性质类对外的类名与方法名不变
- #-keep class com.example.common.sort.exact.bean.**
-
- -keep class com.example.config.**
- -keep class com.example.config.** { *; }
-
- ##---------------Begin: proguard configuration for Gson ----------
- # Gson uses generic type information stored in a class file when working with fields. Proguard
- # removes such information by default, so configure it to keep all of it.
- -keepattributes Signature
- # Gson specific classes
- -keep class sun.misc.Unsafe { *; }
- #-keep class com.google.gson.stream.** { *; }
- # Application classes that will be serialized/deserialized over Gson
- #-keep class com.google.gson.examples.android.model.** { *; } ##这里需要改成解析到哪个 javabean
-
- -keep class com.google.**{*;}
- -keepclassmembers class * implements java.io.Serializable {
- static final long serialVersionUID;
- private static final java.io.ObjectStreamField[] serialPersistentFields;
- private void writeObject(java.io.ObjectOutputStream);
- private void readObject(java.io.ObjectInputStream);
- java.lang.Object writeReplace();
- java.lang.Object readResolve();
- }
- ##---------------End: proguard configuration for Gson ----------
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。