Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
Java 使用与标记的多模块Maven/Spring启动项目?_Java_Spring Boot_Maven_Pom.xml_Dependency Management - Fatal编程技术网

Java 使用与标记的多模块Maven/Spring启动项目?

Java 使用与标记的多模块Maven/Spring启动项目?,java,spring-boot,maven,pom.xml,dependency-management,Java,Spring Boot,Maven,Pom.xml,Dependency Management,我在谷歌搜索时参考了这篇文章,对于在pom.XML中使用XML标记与在多模块Maven项目中使用XML标记之间的区别,我仍然有一些疑问: 这是我的项目结构的draw.io——它只是一个Spring boot/Maven项目,有一个根pom.xml父模块和三个子模块,每个子模块都有自己的pom继承自父pom: 根据这篇文章,似乎可以在多模块Maven项目中使用标记来集中版本、范围等。。依赖性。用户声明您仍然需要在子模块中再次声明封闭标记中的任何依赖项。。。这是真的吗?如果是这样,为什么不在父P

我在谷歌搜索时参考了这篇文章,对于在pom.XML中使用XML标记与在多模块Maven项目中使用XML标记之间的区别,我仍然有一些疑问:

这是我的项目结构的draw.io——它只是一个Spring boot/Maven项目,有一个根pom.xml父模块和三个子模块,每个子模块都有自己的pom继承自父pom:

根据这篇文章,似乎可以在多模块Maven项目中使用标记来集中版本、范围等。。依赖性。用户声明您仍然需要在子模块中再次声明封闭标记中的任何依赖项。。。这是真的吗?如果是这样,为什么不在父POM中使用常规的封闭标记,因为这样所有子模块都将继承此依赖关系?我自己用SpringBootStarter父级测试了这一点,通过在我的根项目的父级POM中声明它,我可以看到所有依赖项,如SpringCore、tomcat Embedded core等。。被注入到我的项目中,所有3个子模块都可以使用这些依赖项


我想我不太清楚使用tag比常规的有什么好处。如果我正确理解Maven POM继承,那么在我的根POM.XML的XML标记中声明的所有Spring Boot Starter依赖项都会被注入到我的项目中,并且可以被任何好的和我想要的子模块使用。此外,在我的根POM.xml中声明的任何不在标记内的标记的依赖项都将被所有子模块继承,如果我不希望出现这种行为,我可以在特定的子模块中定义依赖项,使用该依赖项避免重复。

您可以在父模块中定义通常的依赖项,正如你所说的,所有的孩子都继承了他们。如果这是你想要的行为,那么这很好


但是,如果您仅在某些模块中需要依赖项,但希望确保整个项目中的版本一致,则可以在父POM的dependencyManagement中定义版本,然后在需要的模块中添加不带版本的依赖项项。

如何?在我的多模块maven项目中,如果我在根pom.xml父级中声明maven surefire plugin和surefire-junit47 plugin之类的插件,我是否需要在子模块POMS中重新声明所有这些插件?您可以使用来控制插件的版本和默认配置。一旦您这样做了,您只需要通过在节中放置一个带有groupId和artifactId的条目来声明配置应该应用于某个模块。对于自动应用的插件,您甚至不需要它。@ennth您应该只定义maven surefire插件,而不定义surefire-junit47提供程序。这是由依赖项控制的,这意味着通过定义对JUnit4的依赖项。。。。