我们有一个方案将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。任何更好的方法。
答案 0 :(得分:2)
我相信这个功能是内置于Maven本身的;您可以在<repository>
块中指定其他<snapshotRepository>
和<distrobutionManagement>
。 (见docs)
答案 1 :(得分:2)
我假设如果您无法更新存储库中的pom文件,则有两个选项:
Deploy artifacts to Maven repository
。它允许您设置存储库URL和名称,以及其他一些选项。将snapshot
策略设置为目标存储库将导致成功上载快照工件。注意
Maven build
(2/3)Bad request
错误pom
文件作为第一个构建步骤,如sed
。这是冒险的,如果不是绝对不可避免的话,不应该使用。要一次更新所有版本我建议使用一些插件(Configuration Slicing plugin作为选项)或直接通过CLI中的脚本更改config.xml
文件,然后在Jenkins中使用“重新加载配置”。