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