使用Maven Shade插件排除工件的java未按预期工作
在使用Maven Shade插件构建uber jar时,我试图排除一系列工件。以下是我为此使用的配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<artifactSet>
<excludes>
<exclude>com.fasterxml.jackson.core:jackson-core:jar:2.4.5</exclude>
</excludes>
</artifactSet>
...
排除没有版本信息的软件包:
<exclude>com.fasterxml.jackson.core:jackson-core</exclude>
但不幸的是,这不是一个选项,因为需要包含不同版本的工件
# 1 楼答案
我想你只需要定义一下你使用的是哪个版本的杰克逊
显然,当您对不同版本(可能是可传递的)具有相同的依赖关系时,这是一种糟糕的做法。在这种情况下,您无法知道该库的哪个版本将最终出现在您的项目中。您可以替换xml中的依赖项顺序,然后最终结果将不同。听起来不太好,是吗
因此,您需要在dependencyManagement部分指定杰克逊的确切版本:
这将确保您的工件中只有特定的版本,并且不需要排除特定的版本
希望这有帮助