首页 > 解决方案 > Maven:项目 A 不尊重项目 B 的排除

问题描述

我有两个项目A和B。

项目 A 依赖于项目 B。项目 B 依赖于库 C,而库 C 依赖于库 D。我同时拥有 A 和 B,但它们位于不同的代码库中并且是独立的。项目 B 就像一个内部通用帮助程序库。

- A 
-- B 
--- C (version 1.1)
---- D (version 1.1)

我想将 D 升级到更新的次要版本,比如说 1.5。

所以在B的pom.xml文件中,我直接导入了D(v1.5)。然后从 C 中排除 D。示例:

<dependency>
  <groupId>D</groupId>
  <artifactId>foobar</artifactId>
  <version>1.5</version>
</dependency>
<dependency>
  <groupId>C</groupId>
  <artifactId>fizzbuzz</artifactId>
  <version>1.1</version>
  <exclusions>
    <exclusion>
      <groupId>D</groupId>
        <artifactId>foobar</artifactId>
    </exclusion>
  </exclusions>
</dependency>

接下来如果我跑

[~/projectB] $ mvn dependency:tree

我确认只使用了 1.5,而不是 1.1。接下来,我构建 B 的新本地快照。并指定项目 A 使用该快照。

我的问题是当我构建项目 A 时,它继续使用 v1.1 并忽略 B 中的排除。这总是返回 1.1 而不是我想要的 1.5。

[~/projectA] $ mvn dependency:tree

项目 A 从不直接导入 C 或 D,它只从导入项目 B 中获取库 D。

我试过了:

我没有解决问题的想法。还有其他人有任何提示吗?

标签: javaspringmaven

解决方案


推荐阅读