提问者:小点点

使用Maven管理微服务之间的多个依赖


我们正在使用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>

问题是发布阶段需要大量时间并且是完全手动的:

  1. 为第一个微服务执行mvn: release(删除-SNAPSHOT
  2. 更改依赖项
  3. pom. xml中的版本
  4. 为第二个微服务执行mvn: release(删除-SNAPSHOT
  5. 等等(实际上在15个微服务上…)

我想知道是否有任何自动化的方式来执行此版本(级联)?

谢啦


共1个答案

匿名用户

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的快捷方式。