【发布时间】:2018-06-27 19:19:26
【问题描述】:
我需要有关 maven-shade-plugin 的帮助。 我有一个应用程序 A 计划添加应用程序 B 的客户端。问题是,应用程序 A 和应用程序 B 都使用一个库(我们称之为冲突库),但版本不同。我无法更改任何这些应用程序中的版本,因为它们依赖于不同版本的 Jersey。 有人告诉我 maven-shade-plugin 应该能够解决这个问题。 我查阅了一些示例并阅读了文档,但我对它的工作原理并不完全了解。
我在应用程序“B”的 pom.xml 中添加了以下 sn-p。 我要在应用程序 A 中添加应用程序 B 依赖项。我需要添加转换器吗?有什么需要添加/排除的吗?提前致谢。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<relocations>
<relocation>
<pattern>com.conflict.lib</pattern>
<shadedPattern>shaded.com.conflict.lib</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
这将如何运作?当我运行 mvn install 时,我在控制台中看到以下内容
Replacing original artifact with shaded artifact.
[INFO] Replacing /Users/.../application-b-client/target/application-b-client-1.0.2-SNAPSHOT.jar with /Users/.../application-b-client/target/application-b-client-1.0.2-SNAPSHOT-**shaded**.jar
[INFO] Dependency-reduced POM written at: /Users/.../application-b-client/dependency-reduced-pom.xml
此着色工件不在我的 .m2 文件夹中。它就在我的项目目标文件夹中。我应该在我的应用程序“A”的 pom.xml 中放入什么? 目前我只有:
<dependency>
<groupId>com.my</groupId>
<artifactId>application-b-client</artifactId>
<version>1.0.2-SNAPSHOT</version>
</dependency>
我应该用 1.0.2-SNAPSHOT.shaded 版本替换它吗?
【问题讨论】:
标签: java spring maven maven-shade-plugin