一、前言
最近在新项目中发现了maven采用聚合的功能,顿时恍然大悟。博主之前项目中没有采用聚合功能,然后好多微服务都要一个个启动,当时觉得微服务很麻烦,原来是之前自己不了解maven的聚合功能,现在有了聚合功能,所有的微服务可以统一管理,想同时启动几个就几个,真的爽!!!
二、Maven 聚合
网上很多资料大多数是讲先建一个project项目,然后把src文件夹删除,然后再相应的建不同的module项目,然后父类项目的pom文件要有 <modules> </modules>
,相应的模块加入进去。然后module模块的pom文件要把父类<parent.></parent>
的信息依赖进去。
接下来我讲一下我的方式。
1、从github上拉取相应的微服务代码,这里我就演示两个
拉取下来以后,直接在maven-polymerization
文件下配置父类的pom文件。
2、配置父类的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.riemann</groupId>
<artifactId>polymerization</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>polymerization-common</module>
<module>polymerization-service</module>
</modules>
<dependencyManagement>
<!--
1. 若 dependencies 里的 dependency 自己没有声明 version 元素,
那么maven 就会 到 depenManagement 里去找有没有该 artifactId 和 groupId 进行过版本声明,
若存在,则继承它,若没有则报错,你必须为dependency声明一个version**
2. 若 dependencies 中的 dependency 声明了version,则 dependencyManagement 中的声明无效-->
<!--
1.所有声明在dependencies 里的依赖都会自动引入,并默认被所有的子项目继承
2.dependencies 即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
3.dependencyManagement 只是声明依赖的版本号,该依赖不会引入,因此子项目需要显示声明所需要引入的依赖,若不声明则不引入
子项目声明了依赖且未声明版本号和scope,则会继承父项目的版本号和scope,否则覆盖
-->
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
核心是这个
<modules>
<module>polymerization-common</module>
<module>polymerization-service</module>
</modules>
3、子类的pom.xml文件也相应配置好
子类的核心<parent>
标签和自己的<artifactId>
标签
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<parent>
<artifactId>polymerization</artifactId>
<groupId>com.riemann</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>polymerization-common</artifactId>
另外一个微服务也是同样的情况‘
4、然后配置好以后左下角会出现service的tab,点进去就可以看到你的微服务模块,然后可以自己同时启动多个微服务,达到统一管理的作用。