leo*_*ruz 6 obfuscation proguard maven java-7
我正在使用 Eclipse IDE 和 java 7 中的 maven 架构项目开发一个 java 应用程序
我需要生成一个混淆的 jar 文件,该文件还必须包含所有混淆的依赖项我一直在检查一些解决方案,但我一直无法获得所需的结果。
我检查过的一些地方是这样的:
从前两个链接中,我基于我当前的大部分实现
这是我的 pom.xml 文件:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>modeloconfigurador.cache</groupId>
<artifactId>CacheClienteModelC</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>modeloconfigurador.cache</groupId>
<artifactId>Serializer</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
<!--<dependency> -->
<!--<groupId>com.pyx4me</groupId> -->
<!--<artifactId>proguard-maven-plugin</artifactId> -->
<!--<version>2.0.4</version> -->
<!-- </dependency> -->
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<finalName>CacheClienteModelC</finalName>
<plugins>
<!-- download source code in Eclipse, best practice -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>false</downloadJavadocs>
</configuration>
</plugin>
<!-- Set a compiler level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<!-- Maven Assembly Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<mainClass>main.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- comienza configuracion proguard -->
<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.10</proguardVersion>
<options>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-small.jar</outjar>
<!-- <injar>CacheClienteModelC-jar-with-dependencies.jar</injar> -->
<!-- <outjar>CacheClienteModelC-small.jar</outjar> -->
<option>-allowaccessmodification</option>
<option>-keep public class main.Main { *; }</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>4.10</version>
<!--<version>5.2.1</version> -->
</dependency>
</dependencies>
</plugin>
<!-- termina configuracion proguard -->
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
[错误] 无法在项目 CacheClienteModelC 上执行目标 com.pyx4me:proguard-maven-plugin:2.0.4:proguard (default):无法重命名 E:\Users\B267481\Documents\ServidorDesarroCreditoAcertum\CacheClienteModelC\target\CacheClienteModelC。罐子 -> [帮助 1]
只是为了让事情更清楚当我构建项目时,在目标文件夹(CacheClienteModelC-jar-with-dependecies.jar 和 CacheClienteModelC.jar)生成了两个不同的 jar,我尝试生成的文件是 CacheClienteModelC-small.jar (混淆的 jar)从未创建过。
我应该如何配置插件来混淆我的项目文件?
您正在使用旧版本的 Maven proguard 插件,您应该使用这个,您可以在 Maven 中央存储库中找到它。
现在对于您的pom.xml,从依赖项中删除依赖项com.pyx4me,您在那里不需要它。
现在至于插件配置尝试这样的事情:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.10</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-small.jar</outjar>
<includeDependency>true</includeDependency>
<options>
<option>-keep public class your.package.Main { *; }</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
<archive>
<manifest>
<mainClass>Main</mainClass>
<packageName>your.package</packageName>
</manifest>
</archive>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>4.10</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
看看你是如何在其中指定 proguard 的依赖关系的?这应该会毫无问题地生成混淆的 jar。试试看。
| 归档时间: |
|
| 查看次数: |
13864 次 |
| 最近记录: |