【问题标题】:Jenkins Maven Release: Replace Snapshot DependenciesJenkins Maven 发布:替换快照依赖
【发布时间】:2013-08-05 07:46:31
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 或者,如果您在属性中设置了版本,请使用 versions:update-properties
    【解决方案2】:

    也许可以不硬编码版本但有一个参数 (${dependency.version}) 然后使用 mvn clean install 开始构建 - Ddependecy.version=VERSION(在 Jenkins 中,您可以参数化构建)。但这只不过是一种 hack!

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

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

    【讨论】:

    • 谢谢@rotscher!使用版本参数效果很好。但我没有直接传递版本,而是创建了一个 Profile use-released-commons。所以当通过mvn clean install -Puse-released-commons构建项目时,它会覆盖version属性并将其设置为发布版本。
    【解决方案3】:

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

    【讨论】:

    • 谢谢,我知道。我的问题是 - 我如何配置 Jenkins 插件,所以 Maven 发布插件知道它应该将 SNAPSHOT 依赖关系解析为某个发布版本。我在 Jenkins 中没有命令行,所以没有提示...
    【解决方案4】:

    我有同样的问题,并从以下解决方案中获得了一些成果。 在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-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]

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多