JavaMaven-多模块项目:从父pom中排除依赖项
我们有一个Maven多模块项目,其中包含大约30个子项目/模块 使用这两个依赖项的所有子项目。(这只是为了在示例中加入一些具体的内容)JavaMaven-多模块项目:从父pom中排除依赖项,java,maven,Java,Maven,我们有一个Maven多模块项目,其中包含大约30个子项目/模块 使用这两个依赖项的所有子项目。(这只是为了在示例中加入一些具体的内容) org.springframework.boot 弹簧启动器webflux org.springframework.boot 弹簧启动启动器数据卡桑德拉 因此,我们重构并将这两个依赖项放到父POM中。上面的代码段现在处于父级。所有的子项目仍然可以从中受益,并且只需在一个地方维护版本,所有人都非常高兴 我们现在有一个项目,它适合业务用例,并且适合这个多模块项目
org.springframework.boot
弹簧启动器webflux
org.springframework.boot
弹簧启动启动器数据卡桑德拉
因此,我们重构并将这两个依赖项放到父POM中。上面的代码段现在处于父级。所有的子项目仍然可以从中受益,并且只需在一个地方维护版本,所有人都非常高兴
我们现在有一个项目,它适合业务用例,并且适合这个多模块项目,我们相信将它放在同一个父POM下是有意义的
但是,这个项目不需要来自父POM的特定依赖项。(在本例中是Cassandra依赖项,但问题是如何从父项中排除某些内容)
由于这个项目是这个多模块的一部分,他还从父模块获取了这个依赖项(Cassandra)。如何告诉此子项目从父项目中排除此依赖项
- 我不想完全提取这个项目,并将其从多模块中分离出来
- 我试着在所有依赖项中添加一个排除项,但它仍然存在。与我的孩子pom的所有依赖项一样,我写了以下内容:
一些
一些手工艺品
org.springframework.boot
弹簧启动启动器数据卡桑德拉
- 我甚至尝试了疯狂的重构,将依赖项从父项移回所有子项,并对子项进行了30次复制粘贴,而我的第31个项目没有。这是可行的,但我相信还有比这更聪明的办法
谢谢。使用DependencyManager在父pom中保留版本,并在需要的子pom中移动实际使用情况。谢谢@Thorbjørnravandersen。但如果可能的话,这是我想要避免的。我需要移动一个当前在父项中的依赖项,所有的孩子都快乐地受益,向下移动到所有的孩子,并复制那里的依赖项。可以只保留在父POM中,但只从一个子POM中删除它?就像本文中提到的:使用的缺点是您必须在子POM文件中重新声明所需的依赖项。您只能通过欺骗Maven使用虚拟工件来避免它。这对于生产代码来说是一个滑坡。这是从父Pom向下重构依赖关系的时机。我只想这么做-30应该可以在10-15分钟内使用现代ide完成。使用DependencyManager将版本保存在父pom中,并将实际使用转移到需要它的子pom中。谢谢@Thorbjørnravandersen。但如果可能的话,这是我想要避免的。我需要移动一个当前在父项中的依赖项,所有的孩子都快乐地受益,向下移动到所有的孩子,并复制那里的依赖项。可以只保留在父POM中,但只从一个子POM中删除它?就像本文中提到的:使用的缺点是您必须在子POM文件中重新声明所需的依赖项。您只能通过欺骗Maven使用虚拟工件来避免它。这对于生产代码来说是一个滑坡。这是从父Pom向下重构依赖关系的时机。我会这么做-30应该是可行的,在10-15分钟与现代ide。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra-reactive</artifactId>
</dependency>
<dependency>
<groupId>some.group</groupId>
<artifactId>some.artifact</artifactId>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra-reactive</artifactId>
</exclusion>
</exclusions>
</dependency>