【问题标题】:Where does Super POM come from in the config配置中的 Super POM 来自哪里
【发布时间】:2014-05-24 02:13:08
【问题描述】:

当我在 Eclipse 中查看我的有效 pom 时,我可以看到大量依赖项和一个标签,说明这是我们公司的超级 pom,它必须构成每个项目的一部分。

我实际上无法确定超级 pom 在配置中的作用。我在 maven 中查看了我的 settings.xml,它列出了远程存储库和内部存储库 - 但似乎在任何地方都看不到超级 pom 的链接。

它是一个从内部原型构建的多模块 maven 项目,并且父模块定义了一个父工件......但是当我浏览父工件时,我仍然看不到超级 pom 是如何发挥作用的。

任何建议表示赞赏。

问候

【问题讨论】:

    标签: java eclipse maven parent-pom


    【解决方案1】:

    超级 pom 由<parent> 标签定义:

    <parent>
      <groupId>com.mycompany</groupId>
      <artifactId>mvn</artifactId>
      <version>1.0.0-SNAPSHOT</version>
    </parent>
    

    【讨论】:

    • 知道了,谢谢。通过 Nexus 中的原型链进行追踪,最终发现我们最终到达了我们的公司超级 pom(不同于 Maven 超级 pom)。谢谢大家。
    【解决方案2】:

    所有 pom 都隐式继承自 maven 发行版中的 super pom。这个 pom 包含所有可以在你的 maven 项目中覆盖的 maven 项目的默认值。但是这些默认值中的大多数都没有被覆盖,因为它们通常构成 maven 的 convention 部分,因为它是一个更倾向于约定的构建工具。例如,默认的构建目录是target,因此这个配置在超级 pom 中作为

    ........
    <directory>${project.basedir}/target</directory>
    .........
    

    更多信息和这个pom的实际位置请参考herehere

    【讨论】:

    • 谢谢,虽然这看起来像一个公司 pom,而不是作为 maven 发行版的一部分,因为它在有效的 pom 中声明了公司名称,并包括 hibernate 和大量的 spring 依赖项。
    • 顺便说一句很棒的链接
    • 哦,我完全错过了您的问题中的公司词。是的,这是声明一个公司范围(或项目范围)的超级 pom 的一般做法,其中提到了公司/项目信息等一般信息和另一个从这个 pom 继承的 pom,其中包含所有依赖项以强制执行标准依赖项版本。
    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 2011-11-26
    • 2016-04-29
    • 2021-11-21
    • 1970-01-01
    • 2014-10-23
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多