106

我注意到 Maven 的<modelVersion></modelVersion>pom.xml 总是设置为 4.0.0。

你能帮我理解这个标签的重要性以及为什么它应该设置为 4.0.0 吗?

4

4 回答 4

97

在 Maven 2 和 3 中它始终设置为 4.0.0,因为目前还没有其他模型。

注意modelVersion包含 4.0.0。这是当前唯一受支持的 POM 版本,并且始终是必需的。[来源]

但如果有其他版本的模型,它不一定需要始终设置为 4.0.0。POM 必须符合模型。假设 Maven 4 提出了模型 4.1。如果您编写 pom 以符合 4.1,它将与 Maven 3 和模型 4.0.0 不兼容。

它被定义为强制性的,可能在定义新模型的情况下强制执行特定的 XML 模型。

于 2013-11-03T23:43:13.097 回答
9

模型版本是您的 POM 符合的项目描述符的版本。它需要包含并设置。值 4.0.0 只是表示它兼容 Maven 3。

于 2015-03-27T16:10:35.817 回答
5

正确答案应该是@Toumi 和@Boj 的答案的组合。另请查看https://cwiki.apache.org/confluence/display/MAVEN/POM+Model+Version+5.0.0了解更多背景信息。

于 2017-09-27T01:37:20.360 回答
2

modelVersion - 包含 POM 的模型版本。Maven 1.x 使用包含 3.0.0 元素的模型作为根的直接子元素。Maven 2.x / 3.x 使用了 4.0.0 元素。

version - 包含项目的版本。如果缺少此属性,则必须存在父元素,并且版本将从父项目继承。

于 2019-11-27T06:42:57.990 回答