maven聚合和继承

一、maven聚合作用

假如一个有一个项目,有好几个系统,比如A系统负责收银,B系统负责人员管理,C系统负责考勤等。在开发过程中,如果需要打包则需要一个一个子系统打包过去,3个还好不是很麻烦,但是如果系统多起来了呢,这时使用maven聚合,创建一个管理其他子系统的工程,对这个一个工程打一次包,从而实现自动为所有子系统打包。

二、实现步骤

1.首先我们新建一个管理工程的工程

ran然后最后一步点击finish,这样一个父工程新建完成。

然后删除无用的项,下图中选中的都可以删除

然后在pom文件中加上如下配置

<packaging>pom</packaging>

这时,pom.xml具体内容如下:

2.然后我们新建对应人员管理系统a的模块,我们取名为maven-a,注意是新建模块,有两种方式新建

a.直接在当前父级工程下新建,这样建立好的模块,自然而然的就在父级工程下面,建立步骤如下

选中maven-parent---new---modile

选中maven

选择,next,在new module界面中,parent点击右边的三点,选择为none

然后一直点击next,直到finsh

这时maven-a的模块建立完成,

从上面的图片我们可以看到,maven-parent下多了一个maven-a的模块,而pom文件中,多出了如下内容。

<modules>
    <module>maven-a</module>
</modules>

b.在file下新建模块,这样建立好的模块,自然而然的与父级工程平级,建立步骤如下

file---new---module

后续步骤,与前面新建maven-a差不多类型,差别如下,

在new module的地方,需要自己自动选择add as module to的工程

选择,前面新建的父级工程,然后填入和前面新建a模块一样的groupid,然后点击next

再将maven-parent删除,点击finsh,这样与父级工程平级的模块B也就新建完成了。

这时我们再来查看项目结构,和paren工程的pom文件

 

可以发现,多出了一个与父级工程平级的项目,且pom文件中也多出了对应maven-b的modeul标签

然后给大家看下,a模块,b模块的pom文件

a  

b

3.功能实现,首先我们来看下,整体的一个目录结构

可以发现,这个时候a模块,b模块都是没有打包的

然后,我们点击对应父级工程的package命令

这时,我们在来来看,整个目录结构

我们可以发现,在a模块,b模块都已经生成一个jar包,我们再点击父级工程的clean,则会将啊a,b模块打好的jar给清除掉

 

注意点:

聚合的功能中,聚合模块的pom.xml中通过modules->module来引用被聚合的模块,被聚合的模块是不用感知自己被聚合了,所以被聚合的模块中pom.xml中是不知道maven-parent的存在的。这也是为什么a,b模块的pom文件中没有任何关于maven-paren工程的信息

 

而有些人这时肯定就会有疑问,为什么我公司使用的子项目中,会含有父级工程的信息,并会用paretn标签标记呢,

这时就会牵扯出下一个知识点,maven继承

 

一、maven继承的作用

经过上篇博文,maven 聚合的学习后,大家可能发现了,就是不同的模块中groupId、version是一样的

我们平常自己写java代码的时候,遇到一样的代码,都会自己想去抽取公共方法,同样maven也提供了同样的功能,实现我们 的需求,那就是maven继承

二、继承的实现案例

1.新建父级工程

父级工程还是用maven聚合案例中的父级工程

2.新建子模块

建立的方法同样有两种,方式同样跟聚合中新建模块的一样,唯一的差别在于,new module的时候,parent选择开始新建好的父级工程

之后则是一模一样的步骤。建立完后之后,我们来看下整体的项目架构、父级工程的pom文件,和c模块的Pom文件

c模块pom文件中多了paren标签,没有了重复的groupId、version,

再看父级工程的pom文件,跟之前新建b模块一样,多了module标签标注的c模块

 

然后,我们进入父级工程所在模块,利用mvn dependency:tree 这个插件可以根据pom.xml的配置,列出构件的依赖树信息。

 

从上面的图,我们可以看出,只有c模块继承了父级工程的所有依赖,而a,b两个模块因为没有继承父级工程,所有并未将依赖继承过来,意味着,如果a,b两个模块需要使用那些jar包的话,还需要自己去pom文件中定义。

上面我们看到了groupId、version、dependency中的依赖在子pom.xml中都没有写,这些都是从父pom.xml中继承过来的,还有很多元素也可以被继承过来,下面我们列个清单:

三、可继承清单

  • groupId:项目组ID,项目坐标的核心元素

  • version:项目版本,项目坐标的核心元素

  • description:项目的描述信息

  • organization:项目的组织信息

  • inceptionYear:项目的创始年份

  • url:项目的url地址

  • developers:项目的开发者信息

  • contributors:项目的贡献者信息

  • distributionManagement:项目的部署配置信息

  • issueManagement:项目的缺陷跟踪系统信息

  • ciManagement:项目的持续集成系统信息

  • scm:项目的版本控制系统信息

  • mailingLists:项目的邮件列表信息

  • properties:自定义的maven属性配置信息

  • dependencyManagement:项目的依赖管理配置

  • repositories:项目的仓库配置

  • build:包括项目的源码目录配置、输出目录配置、插件管理配置等信息

  • reporting:包括项目的报告输出目录配置、报告插件配置等信息

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值