Java Proguard无法通过maven插件混淆jar
我试图通过maven和proguard maven插件混淆jar构建。构建也很成功,但是当我通过JAD(Java反编译器)反编译相同的代码时,我能够看到所有的Java代码。因此,似乎没有对java源文件进行混淆。请在以下pom.xml中找到相同的:Java Proguard无法通过maven插件混淆jar,java,maven,proguard,obfuscation,proguard-maven-plugin,Java,Maven,Proguard,Obfuscation,Proguard Maven Plugin,我试图通过maven和proguard maven插件混淆jar构建。构建也很成功,但是当我通过JAD(Java反编译器)反编译相同的代码时,我能够看到所有的Java代码。因此,似乎没有对java源文件进行混淆。请在以下pom.xml中找到相同的: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche
<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>com.ks</groupId>
<artifactId>executable-jar-sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.testSource>1.8</maven.compiler.testSource>
<maven.compiler.testTarget>1.8</maven.compiler.testTarget>
<version.maven-javadoc-plugin>3.1.1</version.maven-javadoc-plugin>
<version.proguard-base>6.1.1</version.proguard-base>
</properties>
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.ks.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- this is used for inheritance merges -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.14</version>
<executions>
<execution>
<id>obfuscation-packaging</id>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
<configuration>
<obfuscate>true</obfuscate>
<attach>true</attach>
<maxMemory>1024m</maxMemory>
<injar>${project.build.finalName}-jar-with-dependencies.jar</injar> <!-- make sure to obfuscate the jar with dependencies -->
<proguardVersion>6.1.1</proguardVersion>
<appendClassifier>false</appendClassifier>
<addMavenDescriptor>true</addMavenDescriptor>
<injarNotExistsSkip>true</injarNotExistsSkip>
<options>
<option>-target 1.8</option>
<option>-printmapping proguard.map</option>
<option>-verbose</option>
<option>-dontwarn</option> <!-- added option to ignore com.sun missing classes -->
<option>-overloadaggressively</option>
<option>-repackageclasses ''</option>
<option>-allowaccessmodification</option>
<option>-keepparameternames</option>
<option>-renamesourcefileattribute SourceFile</option>
<option>-dontoptimize</option>
<option>-dontshrink</option>
<option>-dontnote</option>
<option>-keepdirectories</option>
<option>-keeppackagenames org.apache.maven.plugin.my.MyMojo</option>
<option>-keepnames class * implements
org.apache.maven.plugin.AbstractMojo</option>
<option>-keepclassmembers
class * implements org.apache.maven.plugin.AbstractMojo
{
private <![CDATA[<fields>]]>;
private <![CDATA[<methods>]]>;
}
</option>
<option>-keepattributes
Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option>
<!-- <option>-keep class com.ks.MyPlugin { *; }</option> -->
<option>-keep public class * {
public protected *;
}
</option>
<option>-keep abstract class * {
public protected *;
}
</option>
<option>-keepclassmembernames class * {
java.lang.Class
class$(java.lang.String);
java.lang.Class
class$(java.lang.String, boolean);
}
</option>
<option>-keepclasseswithmembernames,includedescriptorclasses
class * {
native <![CDATA[<methods>]]>;
}
</option>
<option>-keepclassmembers,allowoptimization enum * {
public
static **[] values();
public static **
valueOf(java.lang.String);
}
</option>
<option>-keepclassmembers class * implements
java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[]
serialPersistentFields;
private void
writeObject(java.io.ObjectOutputStream);
private void
readObject(java.io.ObjectInputStream);
java.lang.Object
writeReplace();
java.lang.Object readResolve();
}
</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<!-- <lib>${java.home}/lib/jce.jar</lib> <lib>${java.home}/lib/ext/sunjce_provider.jar</lib> -->
</libs>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.1.1</version>
</dependency>
</dependencies>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.ks
可执行jar示例
0.0.1-快照
1.8
1.8
1.8
1.8
3.1.1
6.1.1
乔达时间
乔达时间
2.10.3
maven汇编插件
com.ks.App
带有依赖项的jar
组装
包裹
单一的
com.github.wvengen
proguard maven插件
2.0.14
模糊包装
包裹
前卫
真的
真的
1024米
${project.build.finalName}-jar-with-dependencies.jar
6.1.1
假的
真的
真的
-具体目标1.8
-printmapping proguard.map
-冗长的
-唐特沃恩
-超载
-重新打包类“”
-允许访问修改
-基帕参数
-重命名SourceFileAttribute源文件
-dontoptimize
-dontshrink
-dontnote
-保留董事
-keeppackagenames org.apache.maven.plugin.my.MyMojo
-keepnames类*实现
org.apache.maven.plugin.AbstractMojo
-keepclassmembers
类*实现org.apache.maven.plugin.AbstractMojo
{
私人]]>;
私人]]>;
}
-记述
异常、内部类、签名、已弃用、源文件、LineNumberTable、*注释*、封闭方法
-保持公开课*{
受公众保护*;
}
-保持抽象类*{
受公众保护*;
}
-keepclassmembernames类*{
java.lang.Class
类$(java.lang.String);
java.lang.Class
类$(java.lang.String,布尔值);
}
-保留类成员名称,包括描述类
班级*{
本地]]>;
}
-keepclassmembers,allowoptimization枚举*{
公众的
静态**[]值();
公共静电**
valueOf(java.lang.String);
}
-keepclassmembers类*实现
java.io.Serializable{
静态最终长SerialVersionId;
私有静态最终java.io.ObjectStreamField[]
serialPersistentFields;
私人空间
writeObject(java.io.ObjectOutputStream);
私人空间
readObject(java.io.ObjectInputStream);
java.lang.Object
writeReplace();
java.lang.Object readResolve();
}
${java.home}/lib/rt.jar
net.sf.proguard
前卫基地
6.1.1