我们有一个方案将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 回答
我相信这个功能内置于Maven本身;您可以在
<distrobutionManagement>
块中指定不同的<repository>
和<snapshotRepository>
. (见docs)我假设如果你不能更新存储库中的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" .