我正在尝试通过 CI/CD 在 pom.xml 上实施我们的应用程序的版本控制策略。
我已遵循此问题的解决方案,并在 Azure DevOps 管道上应用了 powershell 脚本任务:How to update version in POM file on post after build number isincreded in Azure Pipeline
我现在可以在工作目录上看到增量的 pom 版本,但我在提交并将此更改推回 azure 存储库时遇到困难。
我还需要运行 git 命令吗?你心中有例子吗?或者你有其他方法来实现这个目标吗?
谢谢你
通常,在源存储库中,建议将
<version>
的值作为占位符保留在 pom.xml
文件中。如果您想在每次构建新的包版本时更新它们的值,则与其他属性类似。
因此,无需将更新后的
pom.xml
文件提交回源存储库。
由于
pom.xml
文件中的属性值也支持环境变量,因此您还可以设置占位符,如下所示。表达式“${env.VAR_NAME}
”引用指定环境变量的值。更多详情,请参阅此处。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
. . .
<version>${env.PACKAGE_VERSION}</version>
. . .
</project>
在管道中,您只需确保实际的新值已映射到占位符引用的具有相同名称(即
PACKAGE_VERSION
)的环境变量。
默认情况下,管道变量(秘密变量除外)将自动映射为环境变量。因此,您只需使用这些值来定义具有相同名称的管道变量即可。
在 pipeline 中构建包时,它会自动使用环境变量的实际值来替换
pom.xml
文件中的占位符。
如果您想使用 运行(构建)编号来设置软件包版本,我们有 预定义变量。您不需要定义额外的管道变量。而在
pom.xml
文件中,你只需要像下面这样设置即可。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
. . .
<version>${env.BUILD_BUILDNUMBER}</version>
. . .
</project>