我们正在使用Maven来定义和管理我们在微服务之间的依赖关系。这是一个例子:
微服务1
<artifactId>ms-1</artifactId>
<version>0.25.04-SNAPSHOT</version>
<dependencies>
<dependency>
<artifactId>ms-2</artifactId>
<version>0.25.00-SNAPSHOT</version>
</dependency>
</dependencies>
微服务2
<artifactId>ms-2</artifactId>
<version>0.25.00-SNAPSHOT</version>
<dependencies>
<dependency>
<artifactId>ms-3</artifactId>
<version>0.28.00-SNAPSHOT</version>
</dependency>
</dependencies>
问题是发布阶段需要大量时间并且是完全手动的:
mvn: release
(删除-SNAPSHOT
)pom. xml
中的版本
mvn: release
(删除-SNAPSHOT
)我想知道是否有任何自动化的方式来执行此版本(级联)?
谢啦
Maven项目不负责管理其依赖项的版本。是构建依赖工件的项目对其版本负责。
在您的情况下,您可以创建一个(伪)聚合器项目,其中包括您的所有微服务作为子模块:
<modules>
<module>../ms-1</module>
<module>../ms-2</module>
<module>../ms-3</module>
<module>../...</module>
<module>../ms-15</module>
</modules>
假设您的微服务项目彼此是兄弟姐妹,例如:
+- (pseudo-)aggregator
| +- pom.xml
+- ms-1
| +- pom.xml
+- ms-2
| +- pom.xml
+- ms-3
| +- pom.xml
+- ms-...
| +- pom.xml
+- ms-15
+- pom.xml
如果他们不适应相对的
这样你会被要求提供所有项目的发布版本(默认为当前
或者,您可以使用-B|--batch-mode
执行非交互式发布,它使用默认值而无需询问。
最后是一项修正案:
release
不是Maven构建生命周期的一个阶段。它是具有各种目标的maven-release ase-plugin
的快捷方式。