gpt4 book ai didi

java - ProGuard + Maven 与 Java 7

转载 作者:太空狗 更新时间:2023-10-29 22:32:33 25 4
gpt4 key购买 nike

我正在努力使 ProGuard 成为我们 Maven 构建过程的一部分。问题是官方 Maven 插件使用的是 ProGuard 4.3,它不支持 Java 7。有什么简单的方法可以让插件改用 Proguard 4.8 吗?

我试过为插件指定依赖关系,但 ProGuard 似乎有一个新的 Maven 模块结构(proguard-base、proguard-parent 等),所以插件不能使用任何 >4.4 的版本。这是我当前的 pom 的样子:

 <plugin>
<groupId>com.pyx4me</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardVersion>4.8</proguardVersion>
<obfuscate>true</obfuscate>
<options>
<option>-allowaccessmodification</option>
<option>-keep public class com.degoo.ui.ClientBackendStarter { public *; public static *; }</option>
</options>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-small.jar</outjar>
<outputDirectory>${project.build.directory}</outputDirectory>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
<addMavenDescriptor>false</addMavenDescriptor>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard</artifactId>
<version>4.8</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>

有什么建议吗?

最佳答案

我使用来自 com.github.wvengen 的 proguard-maven-plugin。请注意不同的 groupId。这样我就可以使用最新的 proguard-base Artifact 5.0。两者都在 Maven Central。下面是我的 pom.xml 中的 proguard-base 部分现在的样子:

父 pom.xml:

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.8</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
[...]

这是我 child pom.xml 的其余部分,但您可能想要修改它:

 <build>
<plugins>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<id>process-classes-with-proguard</id>
<phase>process-classes</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<maxMemory>256m</maxMemory>
<injar>classes</injar>
<libs>
<lib>${rt.jar.path}</lib>
<lib>${jsse.jar.path}</lib>
</libs>
<obfuscate>true</obfuscate>
<attach>true</attach>
<addMavenDescriptor>false</addMavenDescriptor>
<proguardInclude>${project.basedir}/proguard.conf</proguardInclude>
</configuration>
</execution>
</executions>
</plugin>

更新:对于我的 Android 项目,我没有使用像 proguard-maven-plugin 这样的专用 Proguard 插件,因为 android-maven-plugin 处理 ProGuard 混淆本身,并且更好地集成到Android 的构建过程。

关于java - ProGuard + Maven 与 Java 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com