我们正在将功能分支构建为版本'功能_'。每个功能构建都将生成相同的版本。由于这些都没有发布,我想将这些文件部署到Snapshots repo中,但是Nexus不允许没有' SNAPSHOT'进入快照回购。
如何配置Nexus以允许回购中的任何版本?
答案 0 :(得分:1)
这实际上是Maven限制。您仍然可以使用feature_x-1.2.3-SNAPSHOT等版本。
你实际上想要实现的目标是什么?
答案 1 :(得分:1)
通过将'-SNAPSHOT'附加到分支版本来解决它。
让詹文斯的Maven使用正确的版本非常棘手。我现在解决它的方式是这样的。在构建作业中,配置Git以构建分支origin/feature/*
。然后:
在'build'部分中,首先要做的是执行一个shell命令来构造一个文件'env.properties',其中包含Maven构建命令要使用的功能分支版本。
echo BRANCH_VERSION="feature_${GIT_BRANCH##*/}-SNAPSHOT" > env.properties
这使用Jenkins的GIT_BRANCH环境属性。 '## * /'是一个Bash Shell Parameter Expansion,除了最后一个'/'字符后面的部分之外,它从参数值中删除所有内容。
然后使用上一步中创建的'env.properties'将Environment Injector Plugin'注入环境变量'用于构建作业。 将'env.properties'放在'属性文件路径'字段中。
使用Maven使用“调用顶级Maven目标”构建具有正确版本的版本化pom:
help:effective-pom -Dbuild.number=${BRANCH_VERSION} -Doutput=versioned-pom.xml
。此步骤是必要的,因为否则jar artefact中的pom不包含导致其他问题的正确版本。
使用另一个“调用顶级Maven目标”步骤,使用上一步中创建的pom版本进行实际构建和部署:-f versioned-pom.xml clean source:jar deploy
这就是所有人。如果有人知道更简单的解决方案,请告诉我。