在proguard-maven-plugin中使用<proguardinclude> </proguardinclude>标记时出现LifecycleExecutionException

时间:2016-03-16 12:39:26

标签: java maven proguard

我正在使用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;

1 个答案:

答案 0 :(得分:0)

我得到了解决方案,我需要更改像

这样的progaurd.conf
0

我在“keepattributes”犯了错误,应该是“-keepattributes”