1

我正在尝试使用 Proguard 来缩小 jar 大小。

我在 Maven pom.xml 中配置了 Proguard。它未能找到所有嵌入式依赖项 jar。它可以读取并解析出当前模块中引用的所有依赖jar,但是对于嵌入在其他模块中的依赖,它找不到它。

例如,我当前的模块是 moduleA,它依赖于另一个模块 moduleB。并且模块 B 有一个依赖模块 C。它可以找到直接在moduleB中的所有类,但是它无法解析出在moduleC中的所有类。我对 proguard 的配置如下:

<plugin>
            <!--groupId>com.pyx4me</groupId-->
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>proguard</id>
                <phase>package</phase>
                <goals>
                  <goal>proguard</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <injar>MyInput-${project.version}.jar</injar>
              <outjar>MyInput-Processed-${project.version}.jar</outjar>
              <options>
                <option>-keep public class * { *; }</option>
                <option>-ignorewarnings</option>
              </options>
              <libs>
                <!--lib>${java.bootstrap.classes}</lib>
                <lib>${java.cryptographic.extension.classes}</lib>
                <lib>${java.secure.socket.extension.classes}</lib-->
              </libs>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>net.sf.proguard</groupId>
                <artifactId>proguard-base</artifactId>
                <version>4.10</version>
                <scope>runtime</scope>
              </dependency>
            </dependencies>
        </plugin>
4

2 回答 2

1

我有类似的问题,但是它可以找到插件的配置依赖项部分中提到的引用。

但是,如果我尝试使用 proguard-base-4.10,proguard-maven-plugin(带有 com.pyx4me groupId)仍然使用 proguard-4.3.jar(您可以在控制台的 maven 输出中看到它);看起来该插件仅适用于“proguard”工件,而不是“proguard-base”。

所以我将依赖项部分配置为:

<dependency>
  <groupId>net.sf.proguard</groupId>
  <artifactId>proguard</artifactId>
  <version>4.10</version>
  <scope>runtime</scope>
</dependency>

但是这个在中央 maven repo中不可用(最新版本是 4.4)。

我所做的是从proguard 下载部分手动下载 proguard-4.10 ,并将 proguard.jar 安装在 4.10 版本下的本地 maven 存储库中 - 现在一切正常。

于 2013-11-04T10:21:29.913 回答
0

该插件的更新版本位于:https ://github.com/wvengen/proguard-maven-plugin

于 2014-02-18T16:12:26.067 回答