Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Hello World项目中使用Maven Proguard插件混淆具有依赖关系的Java Jar_Java_Maven_Plugins_Proguard_Obfuscation - Fatal编程技术网

在Hello World项目中使用Maven Proguard插件混淆具有依赖关系的Java Jar

在Hello World项目中使用Maven Proguard插件混淆具有依赖关系的Java Jar,java,maven,plugins,proguard,obfuscation,Java,Maven,Plugins,Proguard,Obfuscation,我从最简单的Maven生成的项目开始,添加了一个类,该类应该是分散的,之后不会出现混淆 mvn clean install 我附上了整个Maven/Intellij项目的档案 pom是 4.0.0 com.mycompany.app 我的应用程序 1.0-快照 我的应用程序 http://www.example.com UTF-8 1.7 1.7 朱尼特 朱尼特 4.11 测试 maven汇编插件 装配 单一的 包裹 带有依赖项的jar com.github.wvengen proguard

我从最简单的Maven生成的项目开始,添加了一个类,该类应该是分散的,之后不会出现混淆

mvn clean install
我附上了整个Maven/Intellij项目的档案 pom是


4.0.0
com.mycompany.app
我的应用程序
1.0-快照
我的应用程序
http://www.example.com
UTF-8
1.7
1.7
朱尼特
朱尼特
4.11
测试
maven汇编插件
装配
单一的
包裹
带有依赖项的jar
com.github.wvengen
proguard maven插件
2.0.8
包裹
前卫
${project.build.finalName}-jar-with-dependencies.jar
5.2
-允许访问修改
-dontoptimize
-dontshrink
-dontnote
-唐特沃恩
-保留署名
-保持类com.mycompany.MyPlugin{*;}
${java.home}/lib/rt.jar
net.sf.proguard
前卫基地
5.2
运行时
我有一个很大的项目,我实现了这里的答案,但是Maven很棘手,一个超级简单的项目可以检测到混淆的东西 我创建了一个新的最小项目来复制错误,并将其附加到这里

这是一个Maven的Hello世界,再加上一个复制错误的类。错误是“你不能让Maven为你运行插件-他在做他自己的事情,也许你可以幸运地运行插件”


所以我的答案是“你能修复一个Hello World项目,用任何混淆的插件混淆类吗?”

对于这个项目,我使用了这个问题和答案中的说明
<?xml version="1.0" encoding="UTF-8"?>

<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.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>my-app</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>

    <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>assembly</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.0.8</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals><goal>proguard</goal></goals>
                        <configuration>
                            <injar>${project.build.finalName}-jar-with-dependencies.jar</injar> <!-- make sure to obfuscate the jar with dependencies -->
                            <proguardVersion>5.2</proguardVersion>
                            <options>
                                <option>-allowaccessmodification</option>
                                <option>-dontoptimize</option>
                                <option>-dontshrink</option>
                                <option>-dontnote</option>
                                <option>-dontwarn</option> <!-- added option to ignore com.sun missing classes -->
                                <option>-keepattributes Signature</option>
                                <option>-keep class com.mycompany.MyPlugin { *; }</option>
                            </options>
                            <libs>
                                <lib>${java.home}/lib/rt.jar</lib>
                            </libs>
                            <dependencies>
                                <dependency>
                                    <groupId>net.sf.proguard</groupId>
                                    <artifactId>proguard-base</artifactId>
                                    <version>5.2</version>
                                    <scope>runtime</scope>
                                </dependency>
                            </dependencies>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

      </plugins>
    </pluginManagement>
  </build>
</project>