Java代码混淆工具ProGuard是比较流行的,集成到Maven中需要使用相关插件。
通过比较,笔者认为IDFC Maven ProGuard Plug-in是较好些(也是ProGuard官方推荐)。
下面是pom的一个配置示例,这个示例是对项目中一个公共lib(有其特殊性)进行混淆,除了plugin之外的配置,还有一个.pro的配置文件(存放在${basedir}/src/main/config/${project.artifactId}-maven.pro)。
<plugin> <groupId>com.idfconnect.devtools</groupId> <artifactId>idfc-proguard-maven-plugin</artifactId> <version>1.0.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>obfuscate</goal> </goals> </execution> </executions> <configuration> <inputFile>${project.build.outputDirectory}</inputFile> <libraryJarPaths> <libraryJarPath>${java.home}/lib/jce.jar</libraryJarPath> </libraryJarPaths> <excludeManifests>false</excludeManifests> <excludeMavenDescriptor>false</excludeMavenDescriptor> <outputArtifacts> <outputArtifact> <file>${project.build.finalName}.${project.packaging}</file> </outputArtifact> </outputArtifacts> </configuration> <dependencies> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard-base</artifactId> <version>4.11</version> </dependency> </dependencies> </plugin>
-renamesourcefileattribute SourceFile -dontskipnonpubliclibraryclassmembers -keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keep public class * { public protected *; -dontskipnonpubliclibraryclassmembers -keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keep public class * { public protected *; } -keepclassmembernames class * { java.lang.Class class$(java.lang.String); java.lang.Class class$(java.lang.String, boolean); } -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers,allowoptimization enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -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(); }
相关推荐
ProGuard Maven插件 在您的构建中运行 。 对于用法,请阅读生成的。 开发发生在。 该插件处于成熟状态,因此预计不会进行重大开发更改。 欢迎提出请求。 这是的的继承者。
修改proguard-maven-plugin插件默认可以对proguard打包后的jar重新打包
基于SpringBoot+Maven多模块工程利用proguard组件实现代码混淆的代码demo,代码清晰完整,导入idea或eclipse即可运行。 使用 proguard 混淆代码只能增加阅读和理解的难度, 并不能百分百保证代码安全。常用的应用...
实现maven管理的Javaweb项目的proguard代码混淆功能、工具包下载及错误解决
Eclipse+ProGuard配置 Eclipse+ProGuard配置
基于springboot搭建一个简单案例,利用proguard插件实现代码混淆,增加源代码的阅读和理解的难度, 并不能百分百保证代码安全。常用的应用场景是项目需要部署到客户机器上,一定程度上防止代码泄露。 ProGuard 是一个...
NULL 博文链接:https://quicker.iteye.com/blog/2321714
MavenWEB项目使用ProGuard进行混淆,最佳解决方案.docx
该插件使您可以使用ProGuard开源混淆器来混淆Maven工件,ProGuard开源混淆器是一种非常强大且完善的Java混淆器。 也可以在SourceForge的http://proguard.sourceforge.net/上找到ProGuard。 可以从您的POM使用此插件...
springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例
维护者的例子 如何使用Apache Maven进行ProGuard。
WEB Maven 项目 ProGuard 混淆方案 POM文件,包含详细混淆注释 具体请参考博客: http://blog.csdn.net/wltj920/article/details/48970869#comments
java 源码加密 混淆,proguard 配置文件,很详细,经测试可以用
混淆行家插件一个用于使用qprotect混淆编译文件的Maven插件
Eclipse配置ProGuard.doc
用proguard对maven构建的springboot项目进行混淆的方法详见 https://blog.csdn.net/dlutwangzihao/article/details/106499820
在打android包的时候如果使用android自带的proguard工具可能会有打包失败的情况,这时需要自己手动下载proguard,然后替换androidsdk/tools/proguard/lib下的内容
[独家奉献]Eclipse+ProGuard配置! [独家奉献]Eclipse+ProGuard配置!