PG代码备份

来源:互联网 发布:五年目的放课后淘宝 编辑:程序博客网 时间:2024/06/10 00:43

代码备份

<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 文件也安装与部署 -->        <options> <!-- 详细配置方式参考 ProGuard 官方文档 -->            <!--<option>-dontobfuscate</option> -->            <option>-ignorewarnings</option> <!--忽略所有告警 -->            <option>-dontshrink</option>   <!--不做 shrink -->            <option>-dontoptimize</option> <!--不做 optimize -->            <option>-dontskipnonpubliclibraryclasses</option>            <option>-dontskipnonpubliclibraryclassmembers</option>            <option>-repackageclasses com.sun4j.xxx</option>            <!--平行包结构(重构包层次),所有混淆的类放在 pg 包下 -->            <!-- 以下为 Keep,哪些内容保持不变,因为有一些内容混淆后(a,b,c)导致反射或按类名字符串相关的操作失效 -->            <option>-keep class **.package-info</option>            <!--保持包注解类 -->            <option>-keepattributes Signature</option>            <!--JAXB NEED,具体原因不明,不加会导致 JAXB 出异常,如果不使用 JAXB 根据需要修改 -->            <!-- Jaxb requires generics to be available to perform xml parsing                 and without this option ProGuard was not retaining that information after                 obfuscation. That was causing the exception above. -->            <option>-keepattributes SourceFile,LineNumberTable,*Annotation*</option>            <!--保持源码名与行号(异常时有明确的栈信息),注解(默认会过滤掉所有注解,会影响框架的注解) -->            <option>-keepclassmembers enum com.sun4j.xxx.** { *;}</option>            <!--保持枚举中的名子,确保枚举 valueOf 可以使用 -->            <!-- <option>-keep class com.sun4j.xxx.** { *;}</option> -->            <!--保持 Bean 类,(由于很多框架会对 Bean 中的内容做反射处理,请根据自己的业务调整) -->            <option>-keep class                com.sun4j.xxx.AutoConfig                { public                void init(); public void                destroy(); }            </option>            <!-- 保持对外的接口性质类对外的类名与方法名不变 -->        </options>        <outjar>${project.build.finalName}-pg</outjar>        <libs>            <lib>${java.home}/lib/rt.jar</lib>        </libs>    </configuration></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();}
1 0
原创粉丝点击