Maven聚合工程

1 Maven聚合工程概念

Maven聚合工程:就是可以在一个Maven父工程中创建多个组件(项目),这个多个组件之间可以相互依赖,实现组件的复用

image.png

2 创建Maven聚合工程

2.1 创建Maven父工程

Maven聚合工程的父工程 packing必须为 pom

  • 创建一个Maven工程
  • 修改父工程的pom.xml,设置打包方式为pom
    ```xml <?xml version=”1.0” encoding=”UTF-8”?> <project xmlns=”http://maven.apache.org/POM/4.0.0

    1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    com.qfedu maven-parent 1.0.0

    pom

  1. - 父工程用于管理子工程,不进行业务实现,因此src目录可以选择性删除
  2. <a name="b0008191"></a>
  3. ###### 2.2 创建Module
  4. - 选择父工程---右键---New---Module
  5. - 输入子工程名称(gv都从父工程继承)
  6. - 子工程的pom文件:
  7. ```xml
  8. <?xml version="1.0" encoding="UTF-8"?>
  9. <project xmlns="http://maven.apache.org/POM/4.0.0"
  10. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  11. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  12. <!--module的pom继承 父工程的pom-->
  13. <parent>
  14. <artifactId>maven-parent</artifactId>
  15. <groupId>com.qfedu</groupId>
  16. <version>1.0.0</version>
  17. </parent>
  18. <modelVersion>4.0.0</modelVersion>
  19. <artifactId>common</artifactId>
  20. </project>
  • 父工程的pom文件:
    ```xml <?xml version=”1.0” encoding=”UTF-8”?> <project xmlns=”http://maven.apache.org/POM/4.0.0

    1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0

    com.qfedu maven-parent

    1.0.0 common pom

  1. <a name="6fa2a495"></a>
  2. #### 3 Maven聚合工程依赖继承
  3. <a name="76f0cdfe"></a>
  4. ###### 3.1 依赖继承
  5. - 在父工程的pom文件添加的依赖,会被子工程继承<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/23162011/1644074924066-5fa56c7d-dbdf-42a1-8851-938f2061a760.png#clientId=u415298b3-69ea-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=492&id=ub24ca0ea&margin=%5Bobject%20Object%5D&name=image.png&originHeight=714&originWidth=1172&originalType=binary&ratio=1&rotation=0&showTitle=false&size=64625&status=done&style=none&taskId=u1cac3c5b-262b-4729-91ee-d914801b8dd&title=&width=807.5796965771306)
  6. <a name="42363cda"></a>
  7. ###### 3.2 依赖版本管理
  8. > 在父工程的pom.xml的dependencyManagement中添加依赖,表示定义子工程中此依赖的默认版本(此定义并不会让子工程中添加当前依赖)
  9. ```xml
  10. <!-- 依赖管理:在dependencyManagement中添加依赖,表示定义子工程中此依赖的默认版本 -->
  11. <dependencyManagement>
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.google.code.gson</groupId>
  15. <artifactId>gson</artifactId>
  16. <version>2.6.1</version>
  17. </dependency>
  18. </dependencies>
  19. </dependencyManagement>