Maven pom中的父标签代表什么?

时间:2011-11-06 10:28:37

标签: maven directory pom.xml artifact

E.g:

<parent>
    <groupId>mycompany.trade.com</groupId>
    <artifactId>mycompany.trade.</artifactId>
    <version>1.1.1.0-SNAPSHOT</version>
</parent>

这是否意味着Maven会搜索父pom? 如果是的话,在哪里,以何种顺序?可能在文件夹中升级1级?或者在本地存储库或repo中?

感谢。

3 个答案:

答案 0 :(得分:38)

是的,maven从本地存储库(或像nexus这样的代理)读取父POM,并通过合并来自父级和模块POM的信息来创建“有效POM”。

另见Introduction to the 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从本地存储库(或从您配置的sonatypejfrog等存储库管理器)读取该父POM,并通过组合父POM来创建Resultant POM以及模块的POM。

要查看合并结果,请使用以下mvn命令:

mvn help:effective-pom