zheshou03 2020-08-13 11:06 采纳率: 0%
浏览 650
已结题

proguard-maven-plugin插件使用

            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <executions>
                <execution>
                    <!-- 打包的时候开始混淆-->
                    <phase>package</phase>
                    <goals><goal>proguard</goal></goals>
                </execution>
            </executions>
            <configuration>
                <proguardVersion>6.0.3</proguardVersion>
                <!--指定混淆的jar,如springboot打出来的jar基于它混淆-->
                <injar>${project.build.finalName}.jar</injar>
                <!--输出的jar-->
                <outjar>${project.build.finalName}.jar</outjar>
                <!-- 是否混淆-->
                <obfuscate>true</obfuscate>
                <options>
                    <option>-target 1.8</option> <!--指定java版本号-->
                    <option>-dontshrink</option> <!--默认开启,不做收缩(删除注释、未被引用代码)-->
                    <option>-dontoptimize</option><!--默认是开启的,这里关闭字节码级别的优化-->
                    <option>-adaptclassstrings</option><!--混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代-->
                    <option>-ignorewarnings</option><!-- 忽略warn消息,如果提示org.apache.http.* 这个包里的类有问题,那么就加入下述代码:-keep class org.apache.http.** { *; }    -dontwarn org.apache.http.**-->
                    <option>-keep class org.apache.logging.log4j.util.* { *; }</option>
                    <option>-dontwarn org.apache.logging.log4j.util.**</option>
                    <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option><!--对异常、注解信息在runtime予以保留,不然影响springboot启动-->
                    <!--不混淆所有interface接口-->
                    <option>-keepnames interface **</option>
                    <option>-keepclassmembers enum * { *; }</option><!--保留枚举成员及方法-->
                    <option>-keepparameternames</option>
                    <option>-keepclasseswithmembers public class * {
                        public static void main(java.lang.String[]);}</option> <!--保留main方法的类及其方法名-->
                    <!--忽略note消息,如果提示javax.annotation有问题,那麽就加入以下代码-->
                    <option>-dontnote javax.annotation.**</option>
                    <option>-dontnote sun.applet.**</option>
                    <option>-dontnote sun.tools.jar.**</option>
                    <option>-dontnote org.apache.commons.logging.**</option>
                    <option>-dontnote javax.inject.**</option>
                    <option>-dontnote org.aopalliance.intercept.**</option>
                    <option>-dontnote org.aopalliance.aop.**</option>
                    <option>-dontnote org.apache.logging.log4j.**</option>
                    <option>-dontnote module-info</option>
                    <!--入口程序类不能混淆,混淆会导致springboot启动不了-->
                    <option>-keep class com.kafang.atgo.restful.WebApp</option>
                    <option>-keepclassmembers  class com.kafang.atgo.restful.WebApp{ *;}</option>
                    <option>-keep class com.jcsoft</option>
                    <option>-keepclassmembers  class com.jcsoft{ *;}</option>
                    <option>-keep interface * extends * { *; }</option>
                    <!--不混淆所有类,保存原始定义的注释-->
                    <option>-keepclassmembers class * {
                        @com.jcsoft.common.bean *;
                        @com.jcsoft.framework.aspectj *;
                        @org.springframework.beans.factory.annotation.Autowired *;
                        @org.springframework.beans.factory.annotation.Value *;
                        }
                    </option>

                    <!-- 不混淆所有的set/get方法 -->
                    <option>-keepclassmembers public class * {void set*(***);*** get*();}</option>
                    <!-- 不对包类的类名进行混淆,但对类中的属性和方法混淆 -->
                    <option>-keep class com.testXM.project.**.**.controller.** </option>
                    <option>-keep class com.testXM.project.**.**.service.** </option>

                    <!-- 不混淆包下的所有类名,且类中的方法也不混淆 -->
                    <option>-keep class com.testXM.project.**.**.pojo.** {*;}</option>

                    <!-- ###排除所有注解类 -->
                    <option>-keep class * extends java.lang.annotation.Annotation { *; }</option>
                    <option>-keep interface * extends java.lang.annotation.Annotation { *; }</option>
                </options>
                <libs>
                    <!-- 添加依赖 java8-->
                    <lib>${java.home}/lib/rt.jar</lib>
                    <lib>${java.home}/lib/jce.jar</lib>
                </libs>
            </configuration>
            <dependencies>
                <!-- https://mvnrepository.com/artifact/net.sf.proguard/proguard-base -->
                <dependency>
                    <groupId>net.sf.proguard</groupId>
                    <artifactId>proguard-base</artifactId>
                    <version>6.0.3</version>
                </dependency>
            </dependencies>
        </plugin>


        插件 会把所有的pojo也混淆,这是不希望看到的,工程类多,我想用通配符写,但是好像没有生效
        有熟悉这块的吗_
  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用