如何配置maven或eclipse以便在版本中使用RELEASE常量?

时间:2012-09-11 13:47:59

标签: eclipse maven m2e

我们所有的项目都是使用maven构建的。 我们将一些主要配置集中在一个超级pom中。

为了始终拥有此超级pom的更新版本(无需修改版本),我们使用了以下语法:

<parent>
    <groupId>my.organization</groupId>
    <artifactId>superPom</artifactId>
    <version>RELEASE</version>
</parent>

问题是Maven Eclipse插件(m2e)不理解这种语法(RELEASE常量未解析)。 因此,我们的Eclipse用户无法使用内置编译。

你有什么建议来克服这个问题?

顺便说一句,我们从maven的角度尝试了几个选项(especially those described here),但版本.RELEASE对每个人来说都是最简单的(除了那些使用Eclipse的人)。

编辑: 我们的项目源分为多个SVN存储库。 这个超级pom是一个独立的项目。它通过我们的Nexus服务器检索。

2 个答案:

答案 0 :(得分:3)

你正试图走错方向。一个release in maven is a particular version like 1.0.0,它表示您已定义该工件的状态。在你的情况下,你的超级pom有一个特定的状态。如果你试图将版本定义为“RELEASE”,你说我的版本总是一样的,但实际上并不是真的。

通常这样的超级pom会随着时间的推移而改变,今天你已经在其中定义了一些特定的依赖版本(dependencyManagemet)。明天你会改变这些定义。现在1.000.000 $问题哪个超级pom状态用于今天已完成的构建?好的,在那个简单的场景中你可以回答这个问题,但如果你昨天某个时候改变了超级pom,你就无法准确回答这个问题。

此外,如果你试图重新创建一个让我们说上周的神器,你不能说在那个特定时间使用了超级pom的确切状态,因为你没有指示器让你有机会看到它。

这就是为什么你需要真正的版本,如1.0.0或1.1.0等。

我强烈建议使用像1.0.0这样的真实版本,但不要像Maver系统那样使用其corrdinate组,工件和版本等“RELEASE”之类的东西。

答案 1 :(得分:2)

版本范围和扩展确实not work for parent artifacts

有人建议改为调用版本插件:

mvn versions:update-parent 

并未完全涵盖您的需求,但我担心没有更好的解决方法。其他想法:使用SNAPSHOT父母pom(我承认不是很满意)。另请参阅Maven2 cannot find parent from relative path