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

use*_*818 50 directory artifact pom.xml maven

例如:

<parent>
    <groupId>mycompany.trade.com</groupId>
    <artifactId>mycompany.trade.</artifactId>
    <version>1.1.1.0-SNAPSHOT</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

sta*_*ker 45

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

另请参阅POM简介

使用父级的一个原因是您有一个中心位置来存储应该在所有模块中使用的工件,编译器设置等版本的信息.


Vin*_*ino 11

公共依赖项,属性,常量等可以在中央父项目pom.xml中定义

最重要的是父项目无法分发,它看起来更像普通的pom.xml,除了包装标签

    <groupId>com.company.demo</groupId>
    <artifactId>MavenInheritance</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
Run Code Online (Sandbox Code Playgroud)

孩子现在能够继承这个

   <parent>
        <groupId>com.company.demo</groupId>
        <artifactId>MavenInheritance</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
Run Code Online (Sandbox Code Playgroud)


Ash*_*ana 9

顾名思义,我们可以为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>
Run Code Online (Sandbox Code Playgroud)

然后 maven 从您的本地存储库(或从您配置的存储库管理器,如sonatypejfrog等)读取该父 POM,并Resultant POM通过组合父 POM 和模块的 POM创建一个。

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

mvn help:effective-pom  
Run Code Online (Sandbox Code Playgroud)