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 组件区别:附实际开发案例参考聚合工程案例各模块草图fmmall 聚合工程项目各模块以及依赖管理一览图:
- dependencyManagement组件用来申明依赖,但不导入;dependencies 组件用于导入依赖
- 子项目不会继承 dependencyManagement 组件中声明的依赖,但如果子项目想导入某个父 pom 中 dependencyManagement 中的依赖,只需要填写 groupId 和 artifactId,不需要填写版本号,maven 会自动去父 pom 的 dependencyManagement 中找对应的 version , 包括scope、exclusions 等
文章插图
项目模块目录:
文章插图
模块说明父工程模块:fmmal
子工程模块:common、beans、mapper、service、api
注意:以上所有工程模块,除 api 是创建的 SpringBoot 项目 , 其他模块都是创建的 maven 项目 。
推荐阅读
- springboot项目整合-注册功能模块开发
- 三、Ocelot请求聚合与负载均衡
- 研发效能|DevOps 已死平台工程永存带来的焦虑
- 3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架
- maven 重复依赖不同版本 选择规则
- 锤子手机怎么样,功能都实用吗(锤子手机怎么进入工程模式)
- 二 网络工程知识VLAN的基础和配置:802.1q帧;Access、Trunk、Hybrid接口工作模式过程与配置;VLANIF的小实验
- Dubbo 03: 直连式 + 接口工程
- 创建SpringMVC工程
- 1 Java I/O:模型与流