2010-06-03 56 views
1

有没有方法可以在POM文件之外指定工件版本?在pom之外指定工件版本

我有2个构建工件的CI工程。一个从'develop'分支建立一个“稳定的”开发版本,另一个建立一个不稳定的版本,这个版本是将所有活动的特性分支合并到开发分支的结果。我希望将稳定版本构建为xyz-1.0.jar,并将集成构建作为xyz-1.0-SNAPSHOT.jar进行构建。有没有办法让CI作业运行maven任务或通过命令行指定是否应该构建发布或快照jar而无需手动修改POM?目前我有在POM中指定为1.0的版本。我考虑过使用发布插件,但我不希望自动版本号增加和标记它。

回答

1

简短的回答:没有。这里有一些补充说明:

  • 它没有多大意义,用“释放”的版本(即非快照)根据CI的一个分支,因为发布版本不会再即使新版本下载可用。
  • 发布的版本应该被标记(例如1.0),维护完成在从标记派生的分支(例如1.0.1-SNAPSHOT)中。
  • 如果您想区分从不同分支构建的版本,请在POM中使用不同的版本。
+0

在maven配置文件中,我将updatePolicy设置为始终为开发版本回购。即使在非SNAPSHOT的情况下,它应该始终检查更新的版本,否? – 2010-06-03 18:35:42

+0

小背景下,我们有50-60个相互依存的瓶子,它们经常变化和释放。我试图避免不断碰撞版本号,因为那时你必须去更新几十个POM。只有当引入了一个改变来打破兼容性时,版本才会增加。 – 2010-06-03 18:50:47

+0

@亚当第一条评论:不,原文在发布后不应该改变。您必须手动复制/删除文件。第二条评论:是的,我明白这一点,我同意最后一句话。对于第一部分来说,这就是为什么release插件很方便(它会为您升级版本号)。 – 2010-06-03 19:24:37

0

你应该能够做到这一点使用maven profiles

1

我能够通过在我的POM中使用一个属性来实现这一点,然后通过命令行覆盖它。

的pom.xml:

... 
    <version>${artifactVersion}</version> 
    <properties> 
     <artifactVersion>1.0</artifactVersion> <!-- default version --> 
    </properties> 
    ... 

然后用mvn -DartifactVersion=1.0-SNAPSHOT package

覆盖但上述帕斯卡的回答是更符合我的深意。我的解决方案更多地是我感觉的解决方法。

+0

我不确定这将与继承一起工作(这就是为什么我没有建议它)。 – 2010-06-03 19:07:32