1

我在 Jenkins 中创建了一个参数化作业:

  • 根据标签“V_x_y_z”获取源(Jenkins-SVN 集成)
  • 执行 Maven 传递标签
  • POM 使用 build-helper-maven-plugin 计算版本 xyz

生成的工件是正确的,但版本错误。

除了将命令行中的版本传递给versions-maven-plugin之外,我看不到任何方法可以更改生成的POM版本。但是 Jenkins 无法解析标签并将其转换为版本。

所以似乎只有“坏”的选择:

  1. 要求用户同时输入构建和标签 -容易出错
  2. 在 Maven 中执行结帐,而不是 jenkins - 这打破了关注点分离,因为 POM 本身是一个版本化的项目。
  3. 用脚本(比如 python)包装 maven - 但是我失去了 Jenkins-Maven 集成的好处

我会认为这是一个平庸的用例,并且很容易得到支持——我错过了一些关键要素吗?

4

1 回答 1

1

我认为实现这一目标的最佳方法是运行 2 个预构建步骤:

  1. 调用一个 shell 脚本,该脚本创建一个带有操纵版本的 java 属性文件

    回声“MYVERSION=$LABEL”| sed -e 's/_/./g' > new_property_file.properties

  2. 调用读取该属性文件并注入新创建的 env var 的 EnvInject 插件步骤

之后,您可以使用新的 env var 作为 maven 命令的输入来调用 maven 插件。

于 2012-11-12T08:21:13.060 回答