【问题标题】:What does the parent tag in Maven pom represent?Maven pom中的父标签代表什么?
【发布时间】:2011-12-23 00:14:48
【问题描述】:

例如:

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

这是否意味着Maven会搜索父pom? 如果是,在哪里,按什么顺序?可能在文件夹上一级吗?或者在本地存储库中还是在 repo 中?

【问题讨论】:

  • 值得一提的是parent标签是可选的。将其设置为任意值可能大多是无害的,但以后也可能产生意想不到的副作用。例如。 SonarCloud.io 假设您要链接到父站点。

标签: maven directory pom.xml artifact parent-pom


【解决方案1】:

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

另见Introduction to the POM

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

【讨论】:

    【解决方案2】:

    常见的依赖、属性、常量等可以在中心父项目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>
    

    【讨论】:

      【解决方案3】:

      顾名思义,我们可以为current pom.xml 文件指出一个parent 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 和您模块的 POM 创建一个 Resultant POM

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

      mvn help:effective-pom  
      

      【讨论】:

      • parent标签中的标签是什么意思?
      猜你喜欢
      • 1970-01-01
      • 2016-01-29
      • 2010-12-31
      • 2016-09-17
      • 2021-09-23
      • 1970-01-01
      • 2021-10-15
      • 2015-01-31
      • 1970-01-01
      相关资源
      最近更新 更多