M2E:版本与父版本重复 - 为什么这是警告?

时间:2011-11-24 22:56:02

标签: eclipse maven pom.xml m2e parent-pom

我有几个Maven项目,每个项目都有一些共同的功能或至少是常见的配置/依赖项。我将其解压缩到一个公共的pom.xml,然后模块化了几个方面,例如持久性,Spring相关的依赖项等等 - 所有这些都在他们自己的模块中继承自这个父POM。

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

  

版本与父版本重复

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

这不是一个选择吗?如果我将ProjectA版本更改为1.0.1或2.0.0,那么一切都很好。

3 个答案:

答案 0 :(得分:55)

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

  

偏好设置> Maven>警告>禁用“版本与父版本重复”警告

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

答案 1 :(得分:54)

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

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

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

答案 2 :(得分: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.