繁体   English   中英

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

[英]Jenkins Maven Release: Replace Snapshot Dependencies

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

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

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

版本Maven插件提供了目标版本:use-latest-releases 您可以在常规构建之前的预执行maven调用中使用此目标,如下所示:

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

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

也许没有硬编码版本但有一个参数( <version> $ {dependency.version} </ version> )然后用mvn clean install启动构建-Ddependecy.version = VERSION (在Jenkins中你可以参数化构建) 。 但这只不过是一个黑客!

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

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

M2 Release插件是围绕标准Maven发布插件的Jenkins包装器。

我有同样的问题,并从以下解决方案中获得了一些好处。 Maven非交互式版本中 ,它在页面底部描述了使用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阶段这将产生短路scm-check-modification的效果,但您在构建服务器上,因此不应进行本地修改。

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

在詹金斯,然后我有这些设置发布:

--batch-mode release:prepare release:perform

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM