maven 聚合工程是使用 maven 将多个工程打包,工程之间可以互相依赖,多个工程的公共依赖库可以在父工程中统一引入。
1、新建一个空的 maven 工程
不需要 src 目录, 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.qyfl</groupId>
<artifactId>imooc.ad</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>imooc-springcloud-ad</name>
<description>test SpringCloud project</description>
</project>
packaging 节点的内容是 pom,意思是这是工程的作用是管理其他工程用的,里面没有业务代码。
name 节点和 description 的作用是给这个总的工程起一个名字和介绍。
2、在父工程下新建具体的子工程。
当父工程建立好之后,可以在父工程中新建子工程(IDEA 中叫做 Modul),每个子工程新建好之后,父工程的 pom 文件中会自动新增 modules 节点。例如:
<?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.qyfl</groupId>
<artifactId>imooc.ad</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>imooc-springcloud-ad</name>
<description>test SpringCloud project</description>
<modules>
<module>ad-eureka</module>
</modules>
</project>
此时可以在子工程下面写业务代码。
3、 管理子工程中公共的依赖
子工程中公共的依赖可以在父工程的 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.qyfl</groupId>
<artifactId>imooc.ad</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>ad-eureka</module>
<module>ad-getway</module>
<module>imooc-ad-service</module>
</modules>
<packaging>pom</packaging>
<name>imooc-springcloud-ad</name>
<description>test SpringCloud project</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
子工程的 pom.xml 也需要做一些修改,例如:
<parent>
<artifactId>imooc.ad</artifactId>
<groupId>com.qyfl</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
这个节点可能在子工程新建的时候就会自动加上。
如果子工程之间需要相互引入依赖可以在 dependencies 中新增节点的方式完成,例如:
<dependencies>
<dependency>
<groupId>com.qyfl</groupId>
<artifactId>ad-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
如果在 IDEA 中使用 Maven 聚合工程,需要每次修改 pom 文件之后点击,具体修改工程下的 install,例如:
Maven 管理










网友评论