首页 文章

使用Maven Shade插件排除工件不能按预期工作

提问于
浏览
1

我正在尝试使用Maven Shade插件构建超级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 回答

  • 0

    我想你只需要定义你正在使用哪个版本的jackson .

    显然,当你有不同版本的相同依赖(可能是传递)时,这是不好的做法 . 在这种情况下,您无法知道该库的哪个版本将在您的项目中结束 . 您可以在xml中替换依赖项顺序,然后最终结果将不同 . 听起来不太好,是吗?

    所以你需要指定 - 你的dependencyManagement部分中的jackson的确切版本:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>${jackson.version}</version>
        </dependency>
     ...
    

    这将确保您的工件中只有特定版本,并且您不需要排除特定版本 .

    希望这可以帮助

相关问题