E.g:
<parent>
<groupId>mycompany.trade.com</groupId>
<artifactId>mycompany.trade.</artifactId>
<version>1.1.1.0-SNAPSHOT</version>
</parent>
这是否意味着Maven会搜索父pom? 如果是的话,在哪里,以何种顺序?可能在文件夹中升级1级?或者在本地存储库或repo中?
感谢。
答案 0 :(得分:38)
是的,maven从本地存储库(或像nexus这样的代理)读取父POM,并通过合并来自父级和模块POM的信息来创建“有效POM”。
使用父级的一个原因是您有一个存储有关版本信息的中心位置 应该在所有模块中使用的工件,编译器设置等。
答案 1 :(得分:5)
公共依赖项,属性,常量等可以在中央父项目pom.xml中定义
最重要的是父项目无法分发,它看起来更像普通的pom.xml,除了打包标签
<groupId>com.company.demo</groupId>
<artifactId>MavenInheritance</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
孩子现在可以使用
继承这个 <parent>
<groupId>com.company.demo</groupId>
<artifactId>MavenInheritance</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
答案 2 :(得分:1)
顾名思义,我们可以为parent pom.xml
文件指出一个current pom.xml
文件。这样,在父pom.xml文件中定义的依赖项,属性,常量以及更多其他内容也将与当前pom.xml(子pom.xml)文件合并。假设您的项目pom.xml中有一个父标签,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
然后,maven从本地存储库(或从您配置的sonatype
,jfrog
等存储库管理器)读取该父POM,并通过组合父POM来创建Resultant POM
以及模块的POM。
要查看合并结果,请使用以下mvn
命令:
mvn help:effective-pom