如何让Proguard用优化的jar覆盖原来的jar?

时间:2014-01-03 04:25:53

标签: java eclipse maven jar proguard

我无法让Proguard用Proguard的优化版本覆盖Maven生成的原始jar。这是我的POM.xml的一部分:

        <plugin>
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals><goal>proguard</goal></goals>
                </execution>
            </executions>
            <configuration>
                <proguardVersion>4.11</proguardVersion>
                <injar>${project.build.finalName}.jar</injar>
                <outjar>${project.build.finalName}.jar</outjar>
                <options>
                    <option>-keep class **</option>
                    <option>-dontskipnonpubliclibraryclasses</option>
                    <option>-dontskipnonpubliclibraryclassmembers</option>
                </options>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                    <lib>${java.home}/lib/jsse.jar</lib>
                    <lib>${java.home}/lib/jce.jar</lib>
                </libs>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>net.sf.proguard</groupId>
                    <artifactId>proguard-base</artifactId>
                    <version>4.11</version>
                </dependency>
            </dependencies>
        </plugin>

请注意以下两行:

    <injar>${project.build.finalName}.jar</injar>
    <outjar>${project.build.finalName}.jar</outjar>

我正在尝试让Proguard使用原始jar作为输入并将其输出到同一个jar,但我得到的是原始jar后缀为“_proguard_base”并且优化的jar被命名为应该如何。只有当inJar和outJar选项相同时才会发生这种情况。

另外,我正在使用Eclipse和Maven插件。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

ProGuard无法将输出jar写入与输入jar相同的文件中。似乎Maven插件试图通过重命名输入jar来解决它。您可能必须在构建过程中考虑到这一点。