Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaMaven-多模块项目:从父pom中排除依赖项_Java_Maven - Fatal编程技术网

JavaMaven-多模块项目:从父pom中排除依赖项

JavaMaven-多模块项目:从父pom中排除依赖项,java,maven,Java,Maven,我们有一个Maven多模块项目,其中包含大约30个子项目/模块 使用这两个依赖项的所有子项目。(这只是为了在示例中加入一些具体的内容) org.springframework.boot 弹簧启动器webflux org.springframework.boot 弹簧启动启动器数据卡桑德拉 因此,我们重构并将这两个依赖项放到父POM中。上面的代码段现在处于父级。所有的子项目仍然可以从中受益,并且只需在一个地方维护版本,所有人都非常高兴 我们现在有一个项目,它适合业务用例,并且适合这个多模块项目

我们有一个Maven多模块项目,其中包含大约30个子项目/模块

使用这两个依赖项的所有子项目。(这只是为了在示例中加入一些具体的内容)


org.springframework.boot
弹簧启动器webflux
org.springframework.boot
弹簧启动启动器数据卡桑德拉
因此,我们重构并将这两个依赖项放到父POM中。上面的代码段现在处于父级。所有的子项目仍然可以从中受益,并且只需在一个地方维护版本,所有人都非常高兴

我们现在有一个项目,它适合业务用例,并且适合这个多模块项目,我们相信将它放在同一个父POM下是有意义的

但是,这个项目不需要来自父POM的特定依赖项。(在本例中是Cassandra依赖项,但问题是如何从父项中排除某些内容)

由于这个项目是这个多模块的一部分,他还从父模块获取了这个依赖项(Cassandra)。如何告诉此子项目从父项目中排除此依赖项

  • 我不想完全提取这个项目,并将其从多模块中分离出来

  • 我试着在所有依赖项中添加一个排除项,但它仍然存在。与我的孩子pom的所有依赖项一样,我写了以下内容:


一些
一些手工艺品
org.springframework.boot
弹簧启动启动器数据卡桑德拉
  • 我甚至尝试了疯狂的重构,将依赖项从父项移回所有子项,并对子项进行了30次复制粘贴,而我的第31个项目没有。这是可行的,但我相信还有比这更聪明的办法
如何从父POM中排除一个特定的依赖项


谢谢。

使用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>