【发布时间】:2018-04-30 22:12:36
【问题描述】:
我在 Spring Boot 应用程序(ver.1.5.8)上使用 proguard-maven-plugin 时遇到以下问题。 我正在尝试混淆最终的 jar 文件,但混淆的 jar 中缺少一些文件。 基本上我错过了 BOOT-INF 和 org.springframework.boot.loader 包,而且 META-INF 有一个 与原始jar文件不同的结构。
这是我在 pom.xml 中的内容
<profiles>
<profile>
<id>obfuscation</id>
<build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<executions>
<execution>
<id>proguard</id>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-min.jar</outjar>
<outputDirectory>${project.build.directory}</outputDirectory>
<proguardInclude>${basedir}/proguard.conf</proguardInclude>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.3.3</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
这是我的 proguard.conf
-dontshrink
-verbose
-optimizationpasses 3
-keepdirectories
-keep class * extends *
-keep interface * extends *
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
-keepclassmembers class * {
@org.springframework.beans.factory.annotation.Autowired *;
}
我使用以下命令执行混淆
mvn clean package -DskipTests=true -P obfuscation
如何在混淆的 jar 中维护 jar 文件的原始结构。我尝试了不同的方法,但没有成功。
提前致谢
【问题讨论】:
标签: java maven spring-boot proguard maven-plugin