Maven 环境下使用 proguard-maven-plugin 插件混淆你的源码

    xiaoxiao2023-10-21  171

    摘要  a、ProGuard(http://proguard.sourceforge.net/) 是比较出色的 Java 代码混淆工具,可以有效的保护与优化你的代码。当然这里说的保护是防止恶意抄袭,通过混淆造成反编译阅读困难。但逻辑与内容并不会加密,仔细分析还是可以获得一些信息。 b、proguard-maven-plugin 是 Maven 中的 ProGuard 插件,可以非常方便的在你做 Maven 打包时进行代码混淆。 c、本文重点介绍 Maven 环境下插件的配置(重点参数),与类路径加载资源问题。 proguard  maven  混淆  jar  java

    目录[-]

    一、场景介绍 二、Maven 配置 1、Project1 的 pom.xml 2、Project2 的 pom.xml 三、Java 混淆前后内容比较 1、混淆前的 Project2 类 2、混淆后的 Project2 类 四、类路径中资源加载问题 五、总结

    一、场景介绍

    两个工程 Project1,Project2(将被混淆的工程)。Project1 将通过 Maven 依赖配置的方式引用混淆后的 Project2。后面我会详细介绍 pom.xml 的配置。

    二、Maven 配置

    1、Project1 的 pom.xml

    该 pom.xml 比较简单主要通过 classifier 来判断是否使用混淆的 Jar(Project2)

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <? xml version = "1.0" encoding = "UTF-8" ?> < project xmlns = "http://maven.apache.org/POM/4.0.0"           xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >      < modelVersion >4.0.0</ modelVersion >        < groupId >org.noahx.proguard.example</ groupId >      < artifactId >project1</ artifactId >      < version >1.0-SNAPSHOT</ version >        < dependencies >          < dependency >              < groupId >org.noahx.proguard.example</ groupId >              < artifactId >project2</ artifactId >              < classifier >pg</ classifier > <!--如果不想依赖混淆的包,请注释掉该行-->              < version >1.0-SNAPSHOT</ version >          </ dependency >      </ dependencies >   </ project >

    2、Project2 的 pom.xml

    pom.xml 中配置的 proguard-maven-plugin 来做混淆,详细说明见注释。

    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 <? xml version = "1.0" encoding = "UTF-8" ?> < project xmlns = "http://maven.apache.org/POM/4.0.0"           xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >      < modelVersion >4.0.0</ modelVersion >        < groupId >org.noahx.proguard.example</ groupId >      < artifactId >project2</ artifactId >      < version >1.0-SNAPSHOT</ version >          < build >          < plugins >                < plugin >                  < groupId >com.github.wvengen</ groupId >                  < artifactId >proguard-maven-plugin</ artifactId >                  < version >2.0.7</ version >                  < executions >                      < execution >                          < phase >package</ phase >                          < goals >                              < goal >proguard</ goal >                          </ goals >                      </ execution >                  </ executions >                  < configuration >                      < attach >true</ attach >                      < attachArtifactClassifier >pg</ attachArtifactClassifier >                      <!-- attach 的作用是在 install 与 deploy 时将生成的 pg 文件也安装与部署 -->                      <
    最新回复(0)