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

时间:2016-06-17 19:38:07

标签: java maven jenkins jenkins-plugins nexus

我们有一个方案将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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

我假设如果您无法更新存储库中的pom文件,则有两个选项:

  1. 有一个Maven Project plugin,可让您添加新的构建后操作Deploy artifacts to Maven repository。它允许您设置存储库URL和名称,以及其他一些选项。将snapshot策略设置为目标存储库将导致成功上载快照工件。注意
    • 仅当构建类型为Maven build(2/3)
    • 时,该步骤才可用 如果您尝试上传发布工件,
    • 上传将失败,并显示Bad request错误
  2. 如果添加插件不是一个选项,您可以使用脏黑客并动态更改pom文件作为第一个构建步骤,如sed。这是冒险的,如果不是绝对不可避免的话,不应该使用。
  3. 要一次更新所有版本我建议使用一些插件(Configuration Slicing plugin作为选项)或直接通过CLI中的脚本更改config.xml文件,然后在Jenkins中使用“重新加载配置”。