Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在UI上使用TFS将构建版本注入pom.xml?_Java_Maven_Tfs_Build_Pom.xml - Fatal编程技术网

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

Java 如何在UI上使用TFS将构建版本注入pom.xml?,java,maven,tfs,build,pom.xml,Java,Maven,Tfs,Build,Pom.xml,我有一个TFS构建定义,它处理用Maven构建的JavaSpring后端应用程序。我有一个名为“Maven pom.xml”的构建步骤,显然可以在其中设置pom.xml的一些选项 我需要在构建时使用TFS更改pom.xml中的“version”标记,以便执行器中的“info”端点提供正确的版本号,包括TFS构建号 1) 使用TFS UI是否可以实现这一点? 2) 如果是,我是否应该更改“选项”文本框内容或“MAVEN_OPTS”以及如何在那里输入参数,pom.xml中的更改是无法通过“MAVE

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

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

1) 使用TFS UI是否可以实现这一点?


2) 如果是,我是否应该更改“选项”文本框内容或“MAVEN_OPTS”以及如何在那里输入参数,pom.xml中的更改是无法通过“MAVEN”构建任务实现的。但还有其他一些方法可以做到这一点。例如,您可以使用一些构建任务,如或,将pom.xml中的值替换为构建版本。或者,您可以在生成定义中添加Powershell脚本任务以更新pom.xml。

是的,这是可能的。遵循以下步骤:

1) 在maven构建任务之前创建另一个maven构建步骤,目标是“打包”

2) 将“目标”设置为:

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

versions:set -DnewVersion=2.3.5.$(Build.BuildNumber)-RELEASE -DskipTests
保存您的更改。这样,/target/classes/META-INF文件夹下的build-info.properties文件将包含您的版本号,该版本号将通过“info”执行器提供

3) 如果需要将生成输出复制到其他位置,请确保也复制META-INF文件夹。如果您当前的复制步骤没有将该文件夹复制到最终放置位置

a。在生成步骤之后创建“复制文件”生成步骤

b。将“
$(build.sourcesdirectory)/target/classes/META-INF
”写入“源文件夹”文本框

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

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

e。保存您的更改


这样,生成定义将正确设置版本信息,并将必要的文件复制到放置位置。要访问您的版本信息,请使用您的“信息”执行器端点。

我相信它可以,如果我证明它是可行的,我将发布一个解决方案。我想知道它的缺点是什么。
versions:set -DnewVersion=2.3.5.$(Build.BuildNumber)-RELEASE -DskipTests