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

时间:2016-06-27 08:39:27

标签: maven dependencies release microservices

我们正在使用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. 更改依赖项的pom.xml中的版本
  3. 为第二个微服务执行mvn:release(删除-SNAPSHOT
  4. 等等(实际上是15个微服务......)
  5. 我想知道是否有任何自动化方式来执行此版本(级联)?

    由于

1 个答案:

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