Files
obsidian_note/技术探究/proguard-maven-plugin.md
2025-12-04 09:12:56 +08:00

79 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# JAVA 混淆
目前能够打出目标混淆文件,需要替换回去
### 参考资料
>http://t.zoukankan.com/eggTwo-p-13685557.html
### 失败的参考资料
>https://www.cnblogs.com/codhome/p/13621169.html
```xml
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<executions> <execution> <!--混淆时刻,这里是打包的时候混淆-->
<phase>package</phase>
<goals> <!--使用插件的什么功能,当然是混淆-->
<goal>proguard</goal>
</goals> </execution> </executions> <configuration> <proguardVersion>6.3.0beta1</proguardVersion>
<obfuscate>true</obfuscate>
<!--是否将生成的PG文件安装部署-->
<attach>true</attach>
<!--是否混淆-->
<obfuscate>true</obfuscate>
<!--指定生成文件分类-->
<attachArtifactClassifier>pg</attachArtifactClassifier>
<options> <!--JDK目标版本1.8-->
<option>-target 1.8</option>
<!--不做收缩(删除注释、未被引用代码)-->
<!--<option>-dontshrink</option>--> <!--不做优化(变更代码实现逻辑)-->
<!--<option>-dontoptimize</option>--> <!--不路过非公用类文件及成员-->
<option>-dontskipnonpubliclibraryclasses</option>
<option>-dontskipnonpubliclibraryclassmembers</option>
<!--优化时允许访问并修改有修饰符的类和类的成员-->
<option>-allowaccessmodification</option>
<!--确定统一的混淆类的成员名称来增加混淆,防止冲突-->
<option>-useuniqueclassmembernames</option>
<!--不混淆所有包名Spring配置中有大量固定写法的包名-->
<option>-keeppackagenames</option>
<!--不混淆所有特殊的类-->
<option>
-keepattributes
Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
</option>
<!--不混淆所有的set/get方法毕竟项目中使用的部分第三方框架例如Shiro会用到大量的set/get映射-->
<option>-keepclassmembers public class *{void set*(***);*** get*();}
</option>
<option>-keep public class * {
public protected *;
}
</option>
<!--不显示警告信息如果显示则会出现Error无法完成混淆-->
<option>-dontwarn **</option>
</options> <outjar>${project.build.finalName}-pg.jar</outjar>
<!--添加依赖这里你可以按你的需要修改这里测试只需要一个JRE的Runtime包就行了-->
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
<!--加载文件的过滤器,就是你的工程目录了-->
<inFilter>com/ai/**</inFilter>
<!--对什么东西进行加载这里仅有classes成功毕竟你也不可能对配置文件及JSP混淆吧-->
<injar>classes</injar>
<!--输出目录-->
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
<dependencies> <!--使用6.3.0beta1版本来混淆-->
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.3.0beta1</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
```