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" />
代码混淆记录到这里,欢迎交流。