【发布时间】:2017-02-28 10:13:42
【问题描述】:
我正在尝试使用 maven 构建和混淆一个多模块项目。我使用 shade 插件创建了一个包含我自己的所有类文件(每个模块)的 fat jar,以便我可以使用 proguard-maven-plugin 混淆 fat jar,然后使用 appassembler 插件创建可执行的构建输出。一切正常,除了其他模块依赖项也出现在 appassembler repo 目录中,这是错误的,因为阴影 jar 中已经存在混淆的类。
我尝试定义提供的其他模块依赖项,然后添加阴影插件的依赖项,但阴影插件似乎忽略了它们。
这是 pom.xml 的相关部分:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>${project.build.directory}/${project.build.finalName}-shaded.${project.packaging}</outputFile>
<artifactSet>
<includes>
<include>${project.groupId}:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>module-a</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>module-b</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.13</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<injar>${project.build.finalName}-shaded.${project.packaging}</injar>
<outjar>${project.build.finalName}.${project.packaging}</outjar>
<proguardInclude>proguard.pro</proguardInclude>
<maxMemory>1024m</maxMemory>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>2.0.0</version>
<executions>
<execution>
<id>assemble</id>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
<configuration>
<programs>
<program>
<mainClass>my.package.Application</mainClass>
</program>
</programs>
<useWildcardClassPath>true</useWildcardClassPath>
<repositoryLayout>flat</repositoryLayout>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
欢迎提出任何想法。
【问题讨论】:
-
你的 pom.xml 在哪里?你用了什么命令?你能提供maven输出吗?
-
@Asettouf mvn 全新安装。构建成功,但阴影 jar 不包含 module-a 和 module-b 类
标签: maven proguard maven-shade-plugin appassembler