我如何“取消继承”Maven依赖?

时间:2013-07-01 14:36:28

标签: maven dependency-management

我有一个大型的多模块项目。 99%的模块依赖于某个第三方库(让我们称之为A),因此对A的依赖记录在项目父POM&因此由所有模块继承。在这99%的情况下,A作为运行时环境的一部分提供。因此依赖关系被标记为已提供。

我遇到过一种情况,其中一个子模块(实际上是孙子,如果重要的话)必须依赖于A.如何从依赖列表中删除A这个模块?

我已尝试combine.self="override",但<dependencies>元素中不允许使用该构造。

1 个答案:

答案 0 :(得分:1)

使用dependencyManagement并添加您不需要的工件的依赖项排除。

这可以作为从我的春天依赖项中排除commons-logging的魅力:

  <dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring-framework.version}</version>
        <exclusions>
          <exclusion>
            <artifactId>commons-logging</artifactId>
            <groupId>commons-logging</groupId>
          </exclusion>
        </exclusions>
      </dependency>

    </dependencies>
  </dependencyManagement>