我有一个大型的多模块项目。99% 的模块都依赖于某个第三方库(我们称它为 A),因此对 A 的依赖记录在项目父 POM 中并因此被所有模块继承。在这 99% 的情况下,A 是作为运行时环境的一部分提供的,因此依赖项相应地标记为已提供。
我今天遇到了一种情况,其中一个子模块(实际上是孙子,如果这很重要)不能依赖于 A。如何从该模块的依赖项列表中删除 A?
我已经尝试过,但元素combine.self="override"
中显然不允许使用该构造。<dependencies>
我有一个大型的多模块项目。99% 的模块都依赖于某个第三方库(我们称它为 A),因此对 A 的依赖记录在项目父 POM 中并因此被所有模块继承。在这 99% 的情况下,A 是作为运行时环境的一部分提供的,因此依赖项相应地标记为已提供。
我今天遇到了一种情况,其中一个子模块(实际上是孙子,如果这很重要)不能依赖于 A。如何从该模块的依赖项列表中删除 A?
我已经尝试过,但元素combine.self="override"
中显然不允许使用该构造。<dependencies>
使用dependencyManagement
并添加您不需要的工件的依赖排除。
这对于commons-logging
从我的 spring 依赖项中排除是一种魅力:
<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>