我正在使用proguard-maven-plugin来混淆我的jar。如果我采用这样的插件结构。
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.11</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<maxMemory>576m</maxMemory>
<proguardVersion>5.0</proguardVersion>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}.jar</injar>
<outjar>build/lib/${project.build.finalName}.jar</outjar>
<outputDirectory>${project.build.directory}</outputDirectory>
<libs>
<lib>${java.home}/jre/lib/rt.jar</lib>
<lib>${java.home}/jre/lib/jce.jar</lib>
</libs>
<options>
<option>-keep public class * { protected *;}</option>
</options>
</configuration>
</plugin>
为此它工作正常并给我一个混淆的jar,但是当尝试在<proguardInclude></proguardInclude>
中的此标记中提供proguard.conf文件而不是
<options>
<option></option>
</options> this tag it throw an exception
"**org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.11:proguard (default) on project**"
:像
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.11</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<maxMemory>576m</maxMemory>
<proguardVersion>5.0</proguardVersion>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}.jar</injar>
<outjar>build/lib/${project.build.finalName}.jar</outjar>
<outputDirectory>${project.build.directory}</outputDirectory>
<proguardInclude>${basedir}/proguard.conf</proguardInclude>
<libs>
<lib>${java.home}/jre/lib/rt.jar</lib>
<lib>${java.home}/jre/lib/jce.jar</lib>
</libs>
</configuration>
</plugin>
我的proguard.conf包含 -
keepattributes
Signature,LineNumberTable,*Annotation*,LocalVariableTable,SourceFile
-keep public class * { public protected *;}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers class com/compny/blha/proj/Class/Container
{
}
-keep fields com/compny/blha/proj/Class/VersionUID long;
答案 0 :(得分:0)
我得到了解决方案,我需要更改像
这样的progaurd.conf0
我在“keepattributes”犯了错误,应该是“-keepattributes”