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

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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作