评论

收藏

[Java] Maven多模块之父子关系的创建

编程语言 编程语言 发布于:2021-09-18 11:55 | 阅读数:600 | 评论:0

这篇文章主要介绍了Maven多模块之父子关系的创建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。
maven多模块(pom)
1.1 父模块创建
先创建个简单的空的maven project作为父项目
DSC0000.png

DSC0001.jpg

DSC0002.jpg

1.2 子模块创建
重新创建一个maven project作为子项目
DSC0003.jpg

DSC0004.jpg

DSC0005.jpg

1.3 父子模块(继承关系)
注意:此时父子模块为两个独立的项目。
DSC0006.jpg

步骤1:子项目中加入<parent>节点,传入父项目完整坐标。
DSC0007.jpg

步骤2:将子项目中的依赖都注释掉。
DSC0008.jpg

注意:此时子项目中的没有了maven dependencies。
DSC0009.jpg

步骤3:将子项目注释的依赖添加到父项目中。
DSC00010.jpg

注意:此时子项目中的依赖又添加回来了。
这种直接在父工程中加入<dependencies>的方式,让子工程可以直接复用依赖,但是缺点是所有的子项目无条件继承父工程所有依赖,所以如果要在父工程中添加依赖只能针对非常通用的依赖。
在父项目中再添加一个依赖。
DSC00011.jpg

子项目同时也继承了新添加的依赖。
DSC00012.jpg

那如果不想无条件继承父工程的所有依赖,而想让子项目自行选择需要的依赖又该如何做呢?
1.4 dependencymanagement
在父项目中用<dependencies>节点包裹<dependencies>节点,并且添加的是完整的依赖坐标(gav)。
DSC00013.jpg
此时子项目中的maven dependencies又会消失,说明添加<dependencies>节点后,它并不负责相关依赖的下载。
子项目加入相应同样依赖,注意不要加version(version继承自父项目),需要什么样的依赖就声明什么。
DSC00014.jpg
特别注意,如果父项目提供了groupid和version,则删除子项目坐标中的groupid和version,直接继承父项目相关坐标。
DSC00015.jpg

dependencymanagement的作用:依赖版本管理器

  • 本身并不下载任何依赖,只是管理依赖的版本。依赖的下载依然需要单独的<dependencies>(不加dependencymanagement,额外写一个)去做
  • 如果<dependencies>中的<dependency>没有声明版本号(version),maven会去寻找有无对应的dependencymanagement,当前工程没有就会向上找父工程。如果找到就以dependencymanagement中对应依赖声明的version为准,否则报错version is missing。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家
原文链接:https://segmentfault.com/a/1190000018528540

关注下面的标签,发现更多相似文章