4

在我们的一个 Maven 项目中,我们依赖于 Commons-POM,它也被其他项目使用,因此不是 Parent-POM 的一部分。由于它也在开发中,我们指的是 SNAPSHOT 版本。

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

那么在 Jenkins 中是否可以替换快照版本?也许同样的方式,Maven Release插件在手动执行时会这样做(它会提示解决依赖关系)?

4

4 回答 4

3

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

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

这样,您可以保留 SNAPSHOT 依赖项,直到工件实际发布。

于 2015-11-20T15:48:31.607 回答
2

也许不硬编码版本但有一个参数(<version>${dependency.version}</version>)然后使用mvn clean install -Ddependecy.version=VERSION开始构建是可能的(在詹金斯你可以参数化构建) . 但这只不过是一个黑客!

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

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

于 2013-08-05T09:34:33.237 回答
1

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

于 2013-08-05T08:05:15.850 回答
1

我有同样的问题,并从以下解决方案中获得了一些成果。在Maven 非交互式版本中,在页面底部它描述了使用 release.properties 文件来定义版本。

我没有手动启动这个文件,而是首先使用以下命令在本地运行 maven:

mvn -U release:prepare -DdryRun=true -Dresume=false

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

文件末尾是:

completedPhase=end-release

将其更改为:

completedPhase=check-dependency-snapshots

请参阅:Maven 发布插件阶段 这将产生短路 scm-check-modifications 的效果,但您在构建服务器上,因此不应该有本地修改。

我将此文件签入到项目根目录下的 scm 中(与 pom 级别相同)

在 jenkins 上,我有这些设置用于发布:

--batch-mode release:prepare release:perform

对我来说似乎有点乱。我希望有一种更清洁的方法。[运行:Jenkins 1.533,Jenkins Maven Release Plug-in Plug-in 0.12.0,Maven Integration plugin 1.533]

于 2013-10-04T17:09:08.660 回答