我有多个构建在JHipster上的微服务,过去使用Maven单独构建。现在,我们有了一个父pom,它将拥有所有可以多次构建的API的所有公共依赖项,并多次部署相同版本的父pom。所有的API都将使用这个作为父pom。问题是,我们在构建过程中使用了Azure DevOps,其中常见的工件被发送到Azure工件,并且版本是不可变的。因此,如果要构建这个父pom并将其打包到Azure工件中,我需要了解以下内容。
P.S:早些时候,我们遇到了一个问题,即公共存储库中的任何更改都需要开发人员在构建之前手动完成pom版本,因为Azure工件不允许构建相同的版本并将其部署到工件中。
发布于 2021-01-05 08:24:47
在构建管道运行期间,您可以尝试为父pom和每个子pom的版本生成一个变量。例如:PARENT_PACKAGE_VERSION,CHILD_01_PACKAGE_VERSION,CHILD_02_PACKAGE_VERSION,..。
这些变量可以由一些量和变量(包括自定义变量、预定义变量和一些表达)组合。这样,您几乎可以尽可能自由地设置版本号。
在pom.xml文件中,可以使用变量名填充version字段。

在管道中,设置一个shell脚本,使用if条件来确定是否更改变量的值。然后用pom.xml文件中的实际值替换变量名称。
例如:
sed -i 's/PACKAGE_VERSION/$(PACKAGE_VERSION)/g' pom.xml在完成上述步骤之后,构建并发布Maven包。
对于父pom的版本,为了避免将相同版本号发布到Azure工件所导致的错误,可以使用更多节点设置版本号,例如<MajorVersion>.<MinorVersion>.<BatchVersion>.MajorVersion和MinorVersion可能不会经常更改。当父包和/或子包中发生任何更新时,可以更改或自动增加BatchVersion。
https://stackoverflow.com/questions/65573815
复制相似问题