我们所有的项目都是使用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服务器检索。
答案 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。