`

ProGuard的Maven插件配置

阅读更多

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-plugin:支持模块化ProGuard软件包的ProGuard Maven插件

    在实际使用中,为了确保ProGuard Maven插件正确运行,开发者需要根据项目的具体需求,细心配置插件的参数,例如指定输入的类路径、输出的目标路径,以及编写混淆规则文件(`proguard.cfg`)。混淆规则文件用于指示...

    使用Maven控件proguard-maven-plugin给可执行jar文件混淆

    本篇文章将详细讲解如何使用Maven插件`proguard-maven-plugin`来对可执行JAR文件进行混淆。 首先,我们需要理解ProGuard是一个强大的Java类文件混淆器,它可以删除无用的代码,缩短类和方法的名称,以及重新打包类...

    实现maven管理的Javaweb项目的proguard代码混淆功能

    1. 添加ProGuard依赖:在项目的`pom.xml`文件中,我们需要添加ProGuard Maven插件。通常,我们会使用`maven-shade-plugin`来结合ProGuard工作,因为它可以方便地整合到构建流程中。例如: ```xml &lt;groupId&gt;...

    MavenWEB项目使用ProGuard进行混淆,最佳解决方案.docx

    文章首先介绍了混淆的必要性,然后详细介绍了 WEB 项目的结构和 Maven 配置文件(pom.xml),最后展示了如何使用 ProGuard 插件对项目进行混淆。 一、混淆的必要性 随着移动互联网的发展,代码的保护变得越来越...

    springboot工程(单个maven工程)利用proguard实现代码混淆

    ProGuard本身并不直接支持Maven,但我们可以借助`maven-shade-plugin`插件来间接使用它: ```xml &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-shade-plugin &lt;version&gt;3.2.4 &lt;phase&gt;package ...

    springboot工程(单个maven工程)利用proguard实现代码混淆 java demo案例

    要在Spring Boot的Maven工程中使用ProGuard,我们需要添加`maven-proguard-plugin`插件到`pom.xml`文件中。配置大致如下: ```xml &lt;groupId&gt;com.github.wvengen&lt;/groupId&gt; &lt;artifactId&gt;proguard-maven-...

    proguard-with-maven-example:如何使用Apache Maven进行ProGuard

    **ProGuard** 是一款强大的Java字节码混淆、优化、预校验和分析工具,它可以帮助开发者保护应用程序,减少...通过Maven的插件机制和ProGuard的配置文件,我们可以灵活地控制混淆和优化的过程,以适应不同的项目需求。

    obfuscation-maven-plugin:一个用于使用qprotect混淆编译文件的Maven插件

    "obfuscation-maven-plugin"是一个专门用于进行代码混淆的Maven插件,它整合了qprotect工具,为Java开发者提供了方便的混淆编译解决方案。 **Maven插件的作用** Maven是Java项目管理的神器,它通过配置文件pom.xml...

    proguard-7.4.0,适合JDK21及以下,官网正版

    这个ZIP文件包含了ProGuard版本7.4.0的所有必要文件和配置。 下载和使用方法: 下载ZIP文件: 点击下载按钮获取proguard-7.4.0.zip文件。确保你选择了适合你操作系统的版本。 解压文件: 下载完成后,使用解压软件...

    cordova-plugin-proguard:适用于ProGuard的Cordova插件

    科尔多瓦插件保护 Cordova插件可激活ProGuard和缩小功能,以... cordova plugin add cordova-plugin-proguard此命令将配置您的build.gradle文件并将proguard-custom.txt复制到${androidPlatformDirectory}/assets/www

    ProGuard工具包,Java代码混淆

    ProGuard可以轻松地与Maven、Gradle等构建工具集成,自动处理混淆、优化和压缩过程。在Gradle中,只需在`build.gradle`文件中添加相关配置即可。 ### 6. 结论 ProGuard作为Java和Android开发中的重要工具,不仅...

    Apache-Maven-3.3.6

    此外,通过使用如ProGuard这样的插件,还可以进行代码混淆和优化。 10. **报告生成**:Maven可以生成多种项目报告,如Javadoc、测试覆盖率、单元测试报告等,帮助开发者了解项目的状态。 总之,Apache Maven 3.3.6...

    Java+IDEA+maven混淆打包

    在`pom.xml`文件中,我们需要添加`maven-jar-plugin`插件来打包Java项目。以下是一个基本的配置示例: ```xml &lt;groupId&gt;org.apache.maven.plugins &lt;artifactId&gt;maven-jar-plugin &lt;version&gt;3.2.0 ...

    proguard7.3.0

    在Android开发中,ProGuard是默认集成在构建系统中的,可以通过Gradle插件配置混淆参数。对于大型项目,合理的混淆策略可以显著减小APK的大小,同时提高应用的安全性。然而,混淆也可能导致意外的错误,因此在发布前...

    Java+IDEA+Maven混淆打包

    混淆过程中,你需要提供一个ProGuard配置文件(通常命名为`proguard.conf`),指定哪些类和方法需要保留,以免混淆过程中导致运行错误。在`&lt;configuration&gt;`标签内,添加`资源配置`引用这个文件。 **步骤4:执行...

    proguard6.1.1.zip

    对于Android开发者,这通常在`build.gradle`文件中完成,并且Google的Android插件已经内置了对ProGuard的支持。 总的来说,ProGuard是Java和Android开发中不可或缺的工具,它提供了强大的代码保护和性能优化功能,...

    proguard 、使用说明

    在现代的开发环境中,如Gradle或Maven,ProGuard 可以通过插件集成到构建流程中。在Android Studio中,ProGuard 配置通常在 `build.gradle` 文件中设置。 ```groovy android { buildTypes { release { ...

    maven 代码混淆.zip

    在Maven项目的pom.xml文件中,我们需要添加`maven-compiler-plugin`和`maven-proguard-plugin`插件。`maven-compiler-plugin`负责编译Java源代码,而`maven-proguard-plugin`则处理混淆过程。 ```xml ...

    Minuere:删除不需要代码的 jars 的 Maven 插件

    结合使用`Minuere`和其他Maven插件,如`Proguard`或`Shade`,可以进一步优化JAR文件。例如,`Proguard`提供更精细的代码混淆和优化功能,而`Shade`则可以将所有依赖合并到一个大JAR中,方便部署。 总之,`Minuere`...

    SpringBoot项目Jar包加密防止反编译详细讲解(值得珍藏)

    同样,JBCO的配置也需要集成到构建流程中,通过Maven插件配置加密配置文件,然后执行相应的打包命令。 3. **操作步骤**: - 对于代码混淆,首先需要安装混淆工具,如ProGuard,然后在构建配置文件中添加混淆插件和...

Global site tag (gtag.js) - Google Analytics