Maven 聚合工程的创建( 二 )

common-project 的 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"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>common-project</artifactId></project>a-project 的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>a-project</artifactId><dependencies><!-- common-project 依赖--><dependency><groupId>com.luis</groupId><artifactId>common-project</artifactId><version>1.0.0</version></dependency></dependencies></project>b-project 的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>b-project</artifactId><dependencies><!-- common-project 依赖--><dependency><groupId>com.luis</groupId><artifactId>common-project</artifactId><version>1.0.0</version></dependency></dependencies></project>c-project 的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 继承父工程 --><parent><artifactId>parent-project</artifactId><groupId>com.luis</groupId><version>1.0.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>c-project</artifactId><dependencies><!-- common-project 依赖--><dependency><groupId>com.luis</groupId><artifactId>common-project</artifactId><version>1.0.0</version></dependency></dependencies></project>其他说明

  • 注意:各个子工程的包名要保持一致
  • 在父工程 pom 的 dependencies 标签中添加的依赖,在其所有子工程中都有,而且和父工程依赖的版本完全一致 。
  • 在父工程 pom 的 dependencyManagement 标签中添加的依赖 , 子工程中默认是没有的 。
    但是 , 如果子工程中需要使用,则直接在其 dependencies 标签中添加即可,此时可不指定版本号,默认使用的是父类中指定的版本号 。
    若子工程不想使用父类中指定的版本号,则自己需要明确指定所用依赖的版本号 。
  • 父工程的标志:pom 中存在 modules 和 packing 标签,且 packaging 标签中打包类型必须为 pom 。
  • 子工程的标志:pom 中 存在 parent 标签,且标签内坐标指向父工程 。
dependencyManagement 和 dependencies 组件区别:
  • dependencyManagement组件用来申明依赖,但不导入;dependencies 组件用于导入依赖
  • 子项目不会继承 dependencyManagement 组件中声明的依赖,但如果子项目想导入某个父 pom 中 dependencyManagement 中的依赖,只需要填写 groupId 和 artifactId,不需要填写版本号,maven 会自动去父 pom 的 dependencyManagement 中找对应的 version , 包括scope、exclusions 等
附实际开发案例参考聚合工程案例各模块草图fmmall 聚合工程项目各模块以及依赖管理一览图:
Maven 聚合工程的创建

文章插图
项目模块目录:
Maven 聚合工程的创建

文章插图
模块说明父工程模块:fmmal
子工程模块:common、beans、mapper、service、api
注意:以上所有工程模块,除 api 是创建的 SpringBoot 项目 , 其他模块都是创建的 maven 项目 。

推荐阅读