IDEA 使用ProGuard混淆Maven项目代码

转自:IDEA 使用JDK1.8使用ProGuard混淆Maven项目代码_DCTANT的博客-CSDN博客_idea 代码混淆

博主这个pom配置试了确实能行,赞!

<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.0.2</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/test/**</inFilter>

                    <!--对什么东西进行加载,这里仅有classes成功,毕竟你也不可能对配置文件及JSP混淆吧-->
                    <injar>classes</injar>

                    <!--输出目录-->
                    <outputDirectory>${project.build.directory}</outputDirectory>
                </configuration>

                <dependencies>
                    <!--使用6.0.2版本来混淆-->
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>6.0.2</version>
                        <scope>runtime</scope>
                    </dependency>

                </dependencies>

            </plugin>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven 项目也可以使用 ProGuard 进行代码混淆。下面是具体的操作步骤: 1. 在 pom.xml 文件添加 ProGuard 插件依赖: ```xml <build> <plugins> <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> <obfuscate>true</obfuscate> <injar>${project.build.finalName}.jar</injar> <outjar>${project.build.finalName}-obfuscated.jar</outjar> <obfuscationDictionary>dictionary.txt</obfuscationDictionary> <proguardInclude>proguard-rules.pro</proguardInclude> </configuration> </plugin> </plugins> </build> ``` 其,groupId、artifactId、version 分别表示插件的坐标;phase 表示插件在 Maven 生命周期的哪个阶段执行;goals 表示插件要执行的目标;obfuscate 表示是否开启混淆;injar 表示输入的 jar 包;outjar 表示输出的混淆后的 jar 包;obfuscationDictionary 表示混淆规则字典;proguardInclude 表示 ProGuard 配置文件。 2. 在 src/main/resources 目录下添加 proguard-rules.pro 文件,配置混淆规则。 3. 在 pom.xml 文件所在的目录下执行以下命令进行混淆: ``` mvn clean package ``` 执行完毕后,会在 target 目录下生成一个混淆后的 jar 包。 需要注意的是,代码混淆虽然可以提高代码的安全性,但同时也可能会影响代码的性能和运行结果,因此需要进行充分的测试和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值