SpringCloud微服务通过proguard进行代码混淆问题记录

      1.文件配置(在pom文件里面添加以下配置)。

           备注:a.注意修改排除混淆类的包路径文件中

                     b. <putLibraryJarsInTempDir>true</putLibraryJarsInTempDir> 这一行试解决

           CreateProcess error=206  文件名或扩展名太长 的问题。

<!--混淆代码插件-->
            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <putLibraryJarsInTempDir>true</putLibraryJarsInTempDir>
                    <proguardVersion>6.2.2</proguardVersion>
                    <obfuscate>true</obfuscate>
                    <addMavenDescriptor>true</addMavenDescriptor>
                    <!--<proguardInclude>${project.basedir}/proguard.cfg</proguardInclude>-->
                    <!-- proguardInclude和options标签二选一 -->
                    <options>
                        <option>-target 1.8</option>
                        <!--  默认是开启的,这里关闭shrink,即不删除没有使用的类/成员 -->
                        <option>-dontshrink</option>
                        <!-- 默认是开启的,这里关闭字节码级别的优化 -->
                        <option>-dontoptimize</option>
                        <!-- 对于类成员的命名的混淆采取唯一策略 -->
                        <option>-useuniqueclassmembernames</option>
                        <!--- 混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代 -->
                        <option>-adaptclassstrings</option>
                        <option>-ignorewarnings</option>
                        <!-- 混淆时不生成大小写混合的类名,默认是可以大小写混合 -->
                        <option>-dontusemixedcaseclassnames</option>
                        <!-- 此选项将用新的类名替换反射方法调用中的所有字符串。例如,调用 Class.forName('className') -->
                        <!-- <option>-adaptclassstrings</option> -->
                        <!-- 此选项将保存所有原始注释等。否则我们将从文件中删除所有内容 -->
                        <!-- 不混淆所有特殊的类-->
                        <option>
                            -keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                            SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
                        </option>
                        <!-- 此选项将保存接口中的所有原始名称(无混淆) -->
                        <option>-keepnames interface **</option>
                        <!-- 此选项会将所有原始方法参数保存在 -keep 部分中定义的文件中,否则所有参数名称都将被混淆 -->
                        <option>-keepparameternames</option>
                        <!-- 保持目录结构-->
                        <option>-keepdirectories</option>

                        <!-- 固定几个类不能混淆 -->
                        <option>-keep class com.hzpt.**.entity.* { *; }</option>
                        <option>-keep class com.hzpt.**.mapper.* { *; }</option>
                        <!-- 排除所有public class 和 method-->
                        <option>-keep public class * { public protected *; }</option>
                        <!-- <option>-keep @org.springframework.stereotype.Service class *</option> -->
                        <!-- 此选项将在所有包的所有类中保存所有原始定义的注释 -->
                        <option>
                            -keepclassmembers class * {
                            <!-- @org.springframework.beans.factory.annotation.Autowired *; -->
                            @org.springframework.beans.factory.annotation.Value *;
                            }
                        </option>
                    </options>
                    <libs>
                        <!-- 包括所需的主要 JAVA 库 -->
                        <lib>${java.home}/lib/rt.jar</lib>
                        <!-- 如有必要,包括加密 JAVA 库  -->
                        <lib>${java.home}/lib/jce.jar</lib>
                    </libs>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>6.2.2</version>
                    </dependency>
                </dependencies>
            </plugin>

2. 如果以上配置加上还报错,则需要修改idea里面的配置文件workspace.xml

 找到  <component name="PropertiesComponent">,添加

     <property name="dynamic.classpath" value="true" />

代码混淆记录到这里,欢迎交流。

     

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值