首页 文章

Jenkins使用Deploy到Maven Repository将工件部署到Nexus

提问于
浏览
1

我们有一个方案将maven build生成的工件部署到Nexus . 詹金斯的工作将实现目标 clean package . 如果pom.xml具有SNAPSHOT版本,则工件应该转到SNAPSHOT repo . 如果pom.xml具有发布版本,则工件应该发布repo . 知道我们如何使用Deploy to Maven Repository插件实现这一目标 . 截至目前,我在Execute Shell中使用以下脚本 .

#!/bin/bash
var1=$1
var2="SNAPSHOT"
if [[ $(echo "$var1"|grep -i "$var2" | wc -l | tr -d ' ') -gt 0 ]]; then
   exit 1
else
   exit 0
fi

在Flexible Publish post build操作中,我使用的是Execute Shell条件操作 . 根据脚本的结果,我将执行Deploy to Maven存储库post build构建操作 . 这只能帮助部署以释放repo . 任何更好的方法 .

2 回答

  • 2

    我相信这个功能内置于Maven本身;您可以在 <distrobutionManagement> 块中指定不同的 <repository><snapshotRepository> . (见docs

  • 2

    我假设如果你不能更新存储库中的pom文件,你有两个选择:

    • 有一个Maven Project plugin,它允许您添加新的构建后操作 Deploy artifacts to Maven repository . 它允许您设置存储库URL和名称,以及其他一些选项 . 将 snapshot 策略设置为目标存储库将导致成功上载快照工件 . 注意

    • 仅当构建类型为 Maven build (2/3)时,该步骤才可用
      如果您尝试上传发布工件,则

    • upload将失败并显示 Bad request 错误

    • 如果添加插件不是一个选项,您可以使用脏黑客并动态更改 pom 文件作为第一个构建步骤,如 sed . 这是有风险的,如果不是绝对不可避免的话,不应该使用 .

    要一次更新所有版本,我建议使用一些插件(Configuration Slicing plugin作为选项)或直接通过CLI中的脚本更改 config.xml 文件,然后在Jenkins中使用"Reload configuration" .

相关问题