码迷,mamicode.com
首页 > 其他好文 > 详细

Maven百科 - 项目构建中的聚合与继承

时间:2015-09-17 11:58:01      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

    在笔者细心研究之前,对这这两者的概念虽有所理解,但在实际操作过程中往往只是知其然不知其所以然,因为他们的配置方式都是在一个 主POM 或者说父POM里面做相关的配置,不知道的可能很容易混淆。

    接下来笔者做个清晰的介绍吧,

聚合

    所谓聚合,其实就是多模块构建。面对较为复杂的项目,通常都会被分为很多相互依赖的模块,而这些模块是独立构建,maven为了应付这种类似的需求,设置了聚合方式。

    使用聚合方式,需要组建一个主模块或者说聚合模块,它是用来管理组织那些小模块。这个聚合模块本身是不用构建的,

它只需要定义一个看似较为特殊的POM即可。

    我们以模块 account-email和account-persist为例,我们为此组建了一个名为account-aggregator的聚合模块。聚合模块的POM长这样:

    技术分享

    其中需要注意的地方是packaing 被定义为POM,其次它额外声明了 modules 在这里面 添加了各个module的名字。

当然了,这只是建立在 主POM文件和 各模块是父子层级关系的时候,当然也可以是平行关系。见下图

技术分享

    左图是父子关系的层级图,右图是平行关系的层级图。如果说只用层级关系的时候主POM中的module需要做相应的变化、

    

技术分享

    还有一点需要注意的是,如果在account-persist的模块中,对account-email有依赖的话,需要在 dependences中声明account-email的GAV(GroupId,artifactId,version).


继承

    继承就是在从主pom那里继承许多重用的配置,可以省去许多代码量了。使用继承方式的话,也是需要一个主POM,其packaging定义为pom。和聚合模块类似,它本身也不用构建,所以没有src target等目录的。

    此外还需要在子模块中 定义父模块的相关信息。

    技术分享

    在parent元素中声明的是父pom的GAV和父POM的相对路劲。 然后再声明自己的GAV。 上图的group和version省略了,原因是从主POM那里继承了。

    除了groupId和Version 还有哪些元素可以被继承的呢?

 可继承的POM元素

groupId

项目Id

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


Maven百科 - 项目构建中的聚合与继承

标签:

原文地址:http://my.oschina.net/u/1041012/blog/507459

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!