ProGuard异常“输入jar和输出jar必须不同”

时间:2018-08-17 09:23:00

标签: java maven spring-boot proguard

我尝试从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>

1 个答案:

答案 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上阅读更多内容。