【问题标题】:Proguard with MavenProguard 与 Maven
【发布时间】:2013-08-13 06:38:42
【问题描述】:

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

【问题讨论】:

标签: java maven proguard


【解决方案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>

但是central maven repo中没有这个(最新版本是4.4)。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-26
      • 2010-10-27
      • 2012-06-11
      • 1970-01-01
      • 2021-10-30
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多