使用 Maven 管理微服务之间的多个依赖关系
Manage multiple dependencies between microservices using 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>
问题是发布阶段要花很多时间,而且完全是手动的:
- 为第一个微服务执行
mvn:release
(删除 -SNAPSHOT
)
- 更改依赖项
pom.xml
中的版本
- 对第二个微服务执行
mvn:release
(删除 -SNAPSHOT
)
- 等等(实际上是在 15 个微服务上...)
我想知道是否有任何自动化的方式来执行此版本(级联)?
谢谢
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>
s 路径。
这样你就被要求提供所有项目的发布版本(默认是当前 <version>
减去 -SNAPSHOT
,只需 Enter 确认) 在 .../(pseudo-)aggregator $ mvn
release:prepare
期间,这也会相应地更新您的 <dependencies>/<dependency>/<version>
。
或者您可以使用 -B | --batch-mode
执行 non-interactive release,它使用默认值而不询问。
最后修正:
release
不是 Maven's build lifecycles. It's the shortcut for the maven-release-plugin
that has various goals 的 阶段 。
我们使用 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
) - 等等(实际上是在 15 个微服务上...)
我想知道是否有任何自动化的方式来执行此版本(级联)?
谢谢
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>
s 路径。
这样你就被要求提供所有项目的发布版本(默认是当前 <version>
减去 -SNAPSHOT
,只需 Enter 确认) 在 .../(pseudo-)aggregator $ mvn
release:prepare
期间,这也会相应地更新您的 <dependencies>/<dependency>/<version>
。
或者您可以使用 -B | --batch-mode
执行 non-interactive release,它使用默认值而不询问。
最后修正:
release
不是 Maven's build lifecycles. It's the shortcut for the maven-release-plugin
that has various goals 的 阶段 。