我们正在使用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
)我想知道是否有任何自动化方式来执行此版本(级联)?
由于
答案 0 :(得分:3)
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
如果他们没有相应调整相对的<module>
路径。
在{{{{{{{{{{{{{{{{{{{{{{{{ 1}} release:prepare
,也会相应更新您的<version>
。
或者您可以使用-SNAPSHOT
执行non-interactive release,.../(pseudo-)aggregator $ mvn
使用默认值而不询问。
最后是修正案:
<dependencies>/<dependency>/<version>
不是Maven's build lifecycles的阶段。这是具有各种maven-release-plugin
的goals的快捷方式。