我尝试从maven插件运行ProGuard,但出现错误:
[proguard] ProGuard, version 5.2.1
[proguard] java.io.IOException: Input jars and output jars must be different [D:\projects\demoObfuscation\target\demo-0.0.1-SNAPSHOT.jar].
[proguard] at proguard.ConfigurationChecker.checkConflicts(ConfigurationChecker.java:202)
[proguard] at proguard.ConfigurationChecker.check(ConfigurationChecker.java:82)
[proguard] at proguard.ProGuard.execute(ProGuard.java:73)
[proguard] at proguard.ProGuard.main(ProGuard.java:538)
在proGuard配置中,我有这个:
-injars /target/demo-0.0.1-SNAPSHOT.jar
-outjars /target/demo-pro.jar
编辑:
带有插件的最小POM:
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardInclude>${basedir}/proguard.conf</proguardInclude>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 0 :(得分:0)
我认为您的proguard配置未读取。尝试直接在插件中配置proguard:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<injar>demo-${project.version}.jar</injar>
<outjar>demo.jar</outjar>
<options>
<option>-keep public class Main { *; }</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
</plugin>
<plugin>
-keep
选项是必需的(将您的主要课程放在此处)。您可以在proguard-maven-plugin
documentation上阅读更多内容。