Maven 继承、聚合和父子结构的创建

一、继承:

      继承:Ason继承Aparent,则Ason继承Aparent的所有依赖。

      继承与依赖传递的区别是,不需要关心B的依赖 scope为compile这个前提条件。

1、如何配置继承:

     1)说到继承肯定是一个父子结构,那么我们创建一个parent project

     2)<packaging>: 作为父模块的POM,其打包类型也必须为 POM

     3)结构:父模块只是为了帮助我们消除重复,所以它也不需要src/main/java、src/test/java等目录

     4)新的元素:<parent> 它是被用在子模块中的,<dependencyManagement> 父工程使用

     5)<parent>元素的属性:<relativePath>:  表示父模块POM的相对路径,在构建的时候,Maven会先根据relativePath检查父POM,如果找不到,再从本地仓库查找

     6)relativePath的默认值:  ../pom.xml

     7)子模块省略groupId和version: 使用了继承的子模块中可以不声明groupId和version, 子模块将隐式的继承父模块的这两个元素。

2、可被继承的POM元素

groupId:项目组ID,项目坐标的核心元素
version: 项目版本, 项目坐标的核心元素
description: 项目的描述信息
organization: 项目的组织信息
inceptionYear: 项目的创始年份
url: 项目的URL地址
developers: 项目开发者信息
contributors: 项目的贡献者信息
distributionManagement: 项目的部署配置
issueManagement: 项目的缺陷跟踪系统信息
ciManagement: 项目的持续集成系统信息
scm: 项目的版本控制系统信息
mailingLists: 项目的邮件列表信息
properties: 自定义的maven属性
dependencies: 项目的依赖配置
dependencyManagement: 项目的依赖管理配置
repositories: 项目的仓库配置
build: 包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
reporting: 包括项目的报告输出目录配置、报告插件配置等

3、继承实现步骤

       1)创建Aparent父工程,打包方式为pom,pom.xml中编写依赖

     

       2)创建Ason子工程,指定父工程gav(子可省gv),并声明要使用父工程的那些依赖ga

      

    3)创建一个类,使用Junit测试OK

    

二、聚合

       Maven将一个大工程可拆分成若干个子工程/模块/项目

       聚合:可以将拆分的若干个子工程合成一个大工程。

       多个Maven项目/模块之间如何依赖,必须 install 放到本地仓库,供其他项目依赖使用。而聚合可不需要  instal 操作。

1、如何配置聚合:

     1)创建一个Maven项目作为聚合使用,负责管理若干个子工程

     2)它的打包方式必须为: pom

     3)引入了新的元素:modules -- module

     4)版本:聚合模块的版本和被聚合模块版本一致

     5)relative path:每个module的值都是一个当前POM的相对目录

     6)目录名称:为了方便的快速定位内容,模块所处的目录应当与其artifactId一致(Maven约定而不是硬性要求),总之,模块所处的目录必须和<module>模块所处的目录</module>相一致。

     7)习惯约定:为了方便构建,通常将聚合模块放在项目目录层的最顶层,其它聚合模块作为子目录存在。这样当我们打开项目的时候,第一个看到的就是聚合模块的POM

     8)聚合模块减少的内容:聚合模块的内容仅仅是一个pom.xml文件,它不包含src/main/Java、src/test/java等目录,因为它只是用来帮助其它模块构建的工具,本身并没有实质的内容。

     9)聚合模块和子模块的目录:他们可以是父子类,也可以是平行结构,当然如果使用平行结构,那么聚合模块的POM也需要做出相应的更改。

2、聚合实现步骤

     1)创建一个Maven项目作为聚合使用,起名maven1,打包方式为pom

     

     2)创建若干子工程/模块,起名mavenA,mavenB,mavenB依赖mavenA

      

      

    3)maven1 测试OK

     配置完聚合之后,以后只要操作总工程(maven1),则会自动操作该聚合下配置过的若干工程/项目/模块

     对 maven1 进行 package install 操作,各模块target下生成 jar包,insall 到本地仓库

       

三、Maven创建父子结构的项目

      上面继承与聚合都采用的是平行结构,接下来使用父子结构(创建子工程是直接存在父工程下面)来实现,

      

1、Maven Project创建父工程 maven_parent

     

2、Maven Module创建子工程 maven_A和maven_B

     

3、切换显示不同的maven子项目显示方式

    

    

4、配置继承,聚合,依赖

    

 

     

    

 5、maven_parent 测试OK

     配置完聚合之后,以后只要操作总工程(maven_parent),则会自动操作该聚合下配置过的若干工程/项目/模块

     对 maven_parent 进行 package install 操作,各模块target下生成 jar包,insall 到本地仓库

      

 

总结

1、聚合:可以将拆分的若干个子工程合成一个大工程,

     对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在。

2、继承:可以通过父工程统一管理依赖的版本号

     对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说,它必须知道自己的父POM是谁。

3、在一些最佳实践中我们会发现:一个POM既是聚合POM,又是父POM,这么做主要是为了方便。

      平行结构与父子结构随自己选择,注意:相对路径,POM也需要做出相应的更改

上面自己对maven知识点亲测OK

 

参考文章:
        maven之详解继承与聚合

 

    站在前辈的肩膀上,每天进步一点点

ends~

发布了248 篇原创文章 · 获赞 59 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_42402854/article/details/100973784
今日推荐