有没有办法动态设置Maven版本号?

时间:2013-10-11 06:17:57

标签: maven jenkins

我想使用Maven生成zip格式的工件。给你一些背景;我的项目包括一个APS包(Application Packaging Standard,用于在Parallels平台上配置云应用程序)。此包是一个zip文件,包含XML和PHP文件的组合。它由Eclipse内的APS插件生成,其名称始终包含其内容的版本和发行版号。

我想要做的是生成一个带有Maven的zip文件,它将成为最终发送给客户的候选版本,不仅包括实际的APS包,还包括其他文件,如README,用户指南.pdf等;我希望此zip文件的名称包含APS包的版本号的版本号。目前我可以通过使用“mvn -Dversion = 1.2.3-4 package”之类的东西手动生成它,但我想自动化该过程,理想情况下从Jenkins运行它。

基本上,我的策略是运行一个脚本,从初始APS包中提取版本号,一旦完成,我的脚本可以调用Maven并可以将此参数传递给它,这样它就可以生成最终的zip文件。正确的版本号。这很好,但是我需要手动运行这个脚本,我正在寻找一个自动化过程。

我的问题是;是否可以从Maven中调用此脚本并使用其返回作为参数来设置运行时的版本名称(或将生成的文件的名称)?正如我所提到的,我希望詹金斯最终能够解决这个问题。它可以拿起pom文件,但我不确定它是如何“自动配置”本身才能拥有正确的版本号。

谢谢你的到来。

2 个答案:

答案 0 :(得分:1)

从jenkins构建中,您可以使用${BUILD_NUMBER}配置文件:

<profile>
         <id>jenkins</id>
         <build>
             <finalName>${artifactId}-${version}-${BUILD_NUMBER}</finalName>
          </build>
</profile>

然后在jenkins中运行:

clean install -Pjenkins

答案 1 :(得分:0)

我使用SVN(或任何源版本控制系统)版本来识别软件构建。

只需执行此

即可
REVISION=`svn info | grep '^Revision:' | sed -e 's/^Revision: //'`

在sourcers文件夹中,你在$ REVISION中获得正确的值,然后你可以将它用于你的maven构建

mvn -Dversion=1.2.3-$REVISION package

简单干净