49

我有几个 Maven 项目,每个项目都有一些共同的功能或至少共同的配置/依赖关系。我将它提取到一个通用的 pom.xml 中,然后将几个方面模块化,例如持久性、与 Spring 相关的依赖项等等——所有这些都在它们自己的模块中,这些模块都继承自这个父 POM。

现在,“Common”是 1.0.0 版本,我希望从它继承“ProjectA”。我收到警告:

版本与父版本重复

我不完全理解为什么这是一个警告。我以为我可以选择从我的项目 POM 中省略版本以继承该版本。(我是为通用模块这样做的——例如,common-spring 为 Spring 应用程序添加了额外的通用依赖项,实际上,ProjectA 实际上继承自 common-spring。)

不就是这样 - 一种选择吗?如果我将我的 ProjectA 版本更改为 1.0.1 或 2.0.0 一切都很好。

4

3 回答 3

61

较新版本的 m2e(自 1.1 起)现在允许您禁用此警告。

首选项 > Maven > 警告 > 禁用“版本与父版本重复”警告

原始错误报告:https ://bugs.eclipse.org/bugs/show_bug.cgi?id=356796

于 2012-10-03T14:49:26.857 回答
57

这只是 m2e 试图变得聪明,因为版本元素(如组 id)有时可能是多余的,并且可以从父 POM 继承,因此从子 POM 中删除此元素是安全的。

但有时这不是多余的信息,例如当父项目和子项目具有不同的生命周期时,m2e 应该允许禁用此警告。不幸的是,还没有办法做到这一点:http: //dev.eclipse.org/mhonarc/lists/m2e-users/msg01961.html

更新:正如 Duncan 所说,在较新的版本中,您可以禁用此警告。

于 2011-12-16T18:40:47.930 回答
2

如果它真的让你烦恼,请使用一个属性来用一些狡猾的手法来抑制警告:

<version>${api.version}</version>
<properties>
    <api.version>0.0.1-SNAPSHOT</api.version>
</properties>

但您真正要做的就是将警告移至控制台输出:

[WARNING] Some problems were encountered while building the effective model for [project]
[WARNING] 'version' contains an expression but should be a constant.
于 2012-05-09T14:16:46.427 回答