Super POM在配置文件中是从哪里来的?

4
当我在Eclipse中查看我的有效POM时,我可以看到大量的依赖项和一个标签,说明这是我们公司的超级POM,必须成为每个项目的一部分。
我实际上无法确定超级POM在配置中起什么作用。我已经查看了maven中的settings.xml,其中列出了远程库和内部库的列表,但似乎没有看到任何与super pom相关的链接。
这是一个从内部原型构建的多模块maven项目,父模块有一个定义的父工件...但当我浏览父工件时,仍然看不到超级POM如何发挥作用。
希望有人能提供任何建议。
谢谢
2个回答

3
超级pom由<parent>标签定义:
<parent>
  <groupId>com.mycompany</groupId>
  <artifactId>mvn</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</parent>

明白了,感谢。在 Nexus 中跟踪原型链,最终找到了我们公司的超级 POM(不同于 Maven 的超级 POM)。谢谢大家。 - smackenzie

1
所有的pom文件都隐式继承自maven发布中存在的super pom。这个pom包含了所有maven项目的默认值,这些默认值可以在你的maven项目中被覆盖。但是大多数这些默认值并没有被覆盖,因为它们通常构成了maven的约定部分,而maven作为一种面向约定的构建工具。例如,默认的构建目录是“target”,因此这个配置在super pom中存在。
........
<directory>${project.basedir}/target</directory>
.........

如需更多信息和此POM的实际位置,请参考此处此处


谢谢,虽然这看起来像是一个公司的POM,而不是Maven分发中的一部分,因为它在effective POM中声明了公司名称,并包含Hibernate和大量Spring依赖项。 - smackenzie
顺便说一下,链接很棒。 - smackenzie
哦,我完全忽略了你问题中的公司词。是的,声明一个公司范围(或项目范围)的超级pom是一般惯例,其中包含一般信息,如公司/项目信息,另一个pom继承自此pom,其中包含所有依赖项以强制执行标准依赖项版本。 - Shailendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接