如何在Snapshot repo中允许任何版本

时间:2015-04-02 13:02:38

标签: continuous-integration nexus

我们正在将功能分支构建为版本'功能_'。每个功能构建都将生成相同的版本。由于这些都没有发布,我想将这些文件部署到Snapshots repo中,但是Nexus不允许没有' SNAPSHOT'进入快照回购。

如何配置Nexus以允许回购中的任何版本?

2 个答案:

答案 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

这就是所有人。如果有人知道更简单的解决方案,请告诉我。