2013-01-23 85 views
15

我有一个Maven pom.xml,我用Jenkins构建项目并释放项目部署。Maven:更改pom.xml中的版本属性

但在此之前建设“发行版本”后,我们需要在

例如设置我的版本: 我在pom.xml中

<properties> 
    <version-own>0.0.21-SNAPSHOT</version-own> 
</properties> 

释放我需要这样设置

<properties> 
    <version-own>0.0.25</version-own> 
</properties> 

发布之后我需要像这样设置

<properties> 
    <version-own>0.0.27-SNAPSHOT</version-own> 
</properties> 

这怎么办?

+3

对于初学者,0.0.21-SNAPSHOT在版本中应该变为0.0.21。然后,在发布之后,将该数字滚动到下一个版本,并添加快照,即0.0.22-SNAPSHOT,以表明它目前正在开发中。请注意,你似乎在跳过数字,这很好,但我没有在这个例子中。 – chad

回答

6

对于初学者,您可以手动完成。如果你的构建很好地遵循了maven惯例,那么你可以利用现有的几个Maven插件之一来帮助管理版本号。

maven-versions-plugin可帮助自动手动更改版本号。它有很好的CLI命令来帮助您在发布之前调整您的poms。

然后有maven-release-plugin可以自动化切割发布的整个过程。它会将您的快照更改为发布版本,然后在发布版本之后将其滚动到下一个快照。在所有这些过程中,它将离散版本的poms提交给源代码控制。

再一次,在maven社区的更多自动化部分中看到成功的秘诀在于你的构建是否以maven方式做事。黑客,高度调整的非常规构建通常会对成功使用发布插件有很多障碍。

+0

你不了解我。需要更改

 0.0.21-SNAPSHOT    com.test-release features-test-release ${version-own} 
user2004266

25

如果你没有使用你自己的版本属性,可以考虑将你的<project><version>0.0.21-SNAPSHOT</version></project>元素上运行以下内容:将修改您的POM和调整的版本根据自己的喜好

mvn versions:set versions:commit -DnewVersion="0.0.25" 

。你很可能需要提交此变更到您的源代码控制库,这样做的SCM插件的SCM:签入的目标只是罚款(假设你希望它是自动的):

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release." 

然后您就可以执行发布(我推荐maven-release-plugin),之后你可以设置你的新版本并按照上面的方式提交它。

versions plugin是你的朋友。编写脚本可能会涉及一些参数化构建,或者最好是jenkins的groovy插件,它允许您获取特定于Maven的构建变量。

+0

需要更改 0.0.21-SNAPSHOT <依赖性> com.test释放 特征检验释放 $ {版本}自己 user2004266

+1

在这里扮演恶魔的拥护者:为什么你不能废弃' 0.0.21-SNAPSHOT'只需' 0.0.21-S NAPSHOT'?如果需要,您仍然可以使用'$ {project.version}'**引用版本,并且您可以使用上述的版本,版本和scm插件。 – Anew

+0

版本 - 自己是依赖版本 – user2004266

0

看着这个comment您正在描述您正在使用此版本来提供依赖关系。 maven-release-plugin应该可以帮助你管理你的版本。所以在你的pom.xml中提供这个插件。

而对于手动提供发布和开发版本步骤,创建詹金斯一份工作,这将有2个字符串参数:
developmentVersion
releaseVersion
添加“援引顶级的Maven目标”打造步执行释放(例如):

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion} 

建设作业时,它会提示您插入两个developmentVersion和releaseVersion。

干杯,
暴君

5

有一个办法来,很容易。随着一个命令你可以改变任何你想要的部分:

剪切和粘贴:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}' 

为清楚:

mvn build-helper:parse-version versions:set -DbuildNumber=555 
    '-DnewVersion= 
        ${parsedVersion.majorVersion} 
       .${parsedVersion.minorVersion} 
       .${parsedVersion.incrementalVersion} 
       -${buildNumber}' 

这是一个简洁的例子,如何在一个去与更新版本建立价值

1

有类似parsedVersion.nextIncrementalVersion

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

相关问题