2012-09-11 26 views
2

我们所有的项目都是使用maven构建的。 我们将一些主要配置集中在一个超级pom中。如何配置maven或eclipse以便在版本中使用RELEASE常量?

为了始终有这样的超级POM的更新版本(无需修改的版本),我们使用的语法如下:

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

问题是Maven的Eclipse插件(M2E)没有按不理解这个语法(RELEASE常量没有解析)。 因此,我们的Eclipse用户不能使用内置编译。

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

顺便说一句,我们已经尝试了几个选项,从maven的角度来看(especially those described here),但version.RELEASE是每个人(除了那些谁正在使用Eclipse)的最简单的。

编辑: 我们的项目源被拆分成多个SVN仓库。 这个超级pom是一个独立的项目。它通过我们的Nexus服务器进行检索。

回答

3

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

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

此外,如果您尝试重新创建上周的工件,那么您不能说在该特定时间使用了哪个超级pom的确切状态,因为您没有指示器可以让您有机会看到它。

这就是为什么你需要真正的版本像1.0.0或1.1.0的理由等

我能强烈电子书籍使用真正的版本像1.0.0等,而不是指“放”,将在Maven系统中使用它的corrdinate组,工件和版本蠕变。

+0

我完全同意你关于如何使用版本的观点。 我其实不得不面对这种情况。 – Arno

+0

我认为,我的解释不够准确:超级POM约束来自发布管理团队。内容仅与RM(存储库,...)有关。 我不在乎这个配置是否改变。但我不希望开发人员花时间更新这个超级pom的版本。 我们尝试了快照解决方案(如Yanflea提到的那样),但是RM测试人员在测试新配置时多次打破了我们的构建。 – Arno

+0

使用版本更简单,并且可以重现。 – khmarbaise

相关问题