Jenkins Maven发布:替换快照依赖项

时间:2013-08-05 07:46:31

标签: maven jenkins jenkins-plugins release-management maven-release-plugin

在我们的一个maven项目中,我们依赖于Commons-POM,它也被其他项目使用,因此不属于Parent-POM 。由于它也在开发中,我们参考SNAPSHOT版本。

使用Jenkins创建发行版时,它将使用快照依赖项。但我们想要的是使用最新版本或只是用发布版本替换快照。

Jenkins有可能更换快照版本吗?也许以同样的方式,Maven Release插件在手动执行时会执行此操作(它会提示解析依赖项)?

4 个答案:

答案 0 :(得分:3)

Versions Maven Plugin提供目标versions:use-latest-releases。您可以在常规构建之前的预执行maven调用中使用此目标,如下所示:

versions:use-latest-releases -Dincludes=com.yourcompany.yourgroupid:yourartifactid versions:commit scm:checkin

这样,您可以保持SNAPSHOT依赖性,直到实际释放工件。

答案 1 :(得分:2)

可能没有硬编码版本但有参数(&lt; version&gt; $ {dependency.version}&lt; / version&gt; ),然后用< em> mvn clean install -Ddependecy.version = VERSION (在Jenkins中你可以参数化构建)。但这只不过是黑客攻击!

在开发过程中有SNAPSHOT依赖项是可以的(有时很痛苦;-)但是在发布项目之前你应该释放依赖项。

如果公共项目的开发(当前)与您的项目紧密耦合,您可以考虑让公共项目在与项目暂时相同的发布周期中进行。

答案 2 :(得分:1)

M2 Release plugin是围绕标准Maven release plugin的Jenkins包装器。

答案 3 :(得分:1)

我遇到了同样的问题,并从以下解决方案中获得了一些好处。 在Maven Non-Interactive releases中,在页面底部,它描述了使用releases.properties文件来定义版本。

我首先使用:

在本地运行maven,而不是手动启动此文件
mvn -U release:prepare -DdryRun=true -Dresume=false

在回答完所有问题后,它会创建您想要使用的releases.properties文件。唯一需要做的就是编辑release.properties文件。

文件末尾是:

completedPhase=end-release

将其更改为:

completedPhase=check-dependency-snapshots

见:Maven Release Plugin phases 这将产生短路scm-check-modification的效果,但是你在构建服务器上,因此不应该进行本地修改。

我在项目的根目录中检查了这个文件到我们的scm(与pom相同的水平)

在詹金斯上,然后我将这些设置用于发布:

--batch-mode release:prepare release:perform

对我来说似乎有些混乱。我希望有一种更清洁的方式。 [运行:Jenkins 1.533,Jenkins Maven发布插件插件0.12.0,Maven集成插件1.533]