如何在 UI 上使用 TFS 将构建版本注入 pom.xml?

How do I inject build version into pom.xml using TFS on UI?

我有一个 TFS 构建定义,它处理使用 Maven 构建的 java spring 后端应用程序。我有一个名为 "Maven pom.xml" 的构建步骤,显然我可以在其中设置 pom.xml 的一些选项。

我需要在构建时使用 TFS 更改 pom.xml 中的 "version" 标记,以便执行器中的 "info" 端点提供正确的版本号,包括 TFS 内部版本号。

1) 这完全可以使用 TFS UI 吗?

2) 如果是,我应该更改 "Options" 文本框内容还是 "MAVEN_OPTS" 以及如何在那里输入参数,从而更改 pom.xml 中的 <version>

"Maven"构建任务无法实现。但是还有其他一些方法可以做到这一点。例如,您可以使用 Replace Tokens or Tokenization 等构建任务将 pom.xml 中的值替换为构建版本。或者您可以在构建定义中添加 Powershell 脚本任务以更新 pom.xml.

是的,这是可能的。请按照以下步骤操作:

1) 在具有 "package" 目标的 Maven 构建任务之前创建另一个 Maven 构建步骤。

2) 将 "Goal(s)" 设置为:

versions:set -DnewVersion=[VersionInformation] -DskipTests

[VersionInformation] 可以是表示所需版本的任何字符串。您可以在此处使用 TFS 变量。此字符串的示例可能是:2.3.5.$(Build.BuildNumber)-RELEASE 因此 versions:set maven 构建任务的目标将如下所示:

versions:set -DnewVersion=2.3.5.$(Build.BuildNumber)-RELEASE -DskipTests

保存您的更改。这样,/target/classes/META-INF 文件夹下的 build-info.properties 文件将包含您的版本号,该版本号将通过 "info" 执行器提供。

3) 如果您需要将构建输出复制到另一个地方,请确保您也复制了 META-INF 文件夹。如果您当前的复制步骤没有将该文件夹复制到您的最终放置位置;

一个。在构建步骤之后创建 "Copy files" 个构建步骤。

b。将“$(build.sourcesdirectory)/target/classes/META-INF”写入 "Source Folder" 文本框。

c。将 * 写入内容文本框。这将复制 META-INF 中的所有文件以防万一。

d。将“/classes/META-INF”附加到目标文件夹文本框中的正常放置位置,以便将 META-INF 文件复制到正确的位置。

e。保存您的更改。

这样,您的构建定义可以正确设置版本信息并将必要的文件复制到您的放置位置。要访问您的版本信息,请使用您的 "info" 执行器端点。