项目管理工具——Maven学习笔记(十二、Maven聚合和继承特性)

什么是Maven聚合特性?
能够把项目的各个模块聚合在一起构建,这种方式就是聚合。不用我们手动依次install各个模块了,提高工作效率。

现在呢,就把我们之前的【maventest-a】、【maventest-b】、【maventest-c】进行聚合。打开Eclipse,创建新项目【maventest-aggregation】。
打开并编辑【maventest-aggregation】的pom.xml:

  1. 将<package>标签值改为pom,作为聚合项目的容器,则必须pom;
  2. 增加<models>标签,将子项【maventest-a】、【maventest-b】、【maventest-c】依次添加。
    如图:
Paste_Image.png

保存,并【Run As】→【Maven Build】,输入命令:clean install

Paste_Image.png

运行之后,它会依次将a、b、c打包安装到本地仓库。

Paste_Image.png

这就是聚合了,那么……

什么是Maven的继承特性呢?
能够帮助抽取各模块相同的依赖和插件等配置,在简化 pom 配置的同时,还能促进各个模块配置的一致性。

例如,我们的【maventest-a】、【maventest-b】、【maventest-c】项目都在pom引入了junit依赖。这就导致我们项目很冗余。那怎么办呢?这时就需要用到继承特性,创建项目父模块【maventest-parent】。

在【maventest-parent】的pom.xml中添加<dependencyManagement>标签。这个标签在pom.xml常用元素中讲到过。

Paste_Image.png

添加好后,就是这样的:

Paste_Image.png

为了防止以后pom.xml变庞大,版本号不易找到和修改,可以将junit的version的值,单独提出来到<properties>标签里,并使用EL表达式引用。

Paste_Image.png

然后将<package>值改为pom,作为父模块这个值必须为pom。又因为是父模块,一般是不在main和test里写代码的,这两个目录,都可以删除。
最后【maventest-parent】的pom.xml:

Paste_Image.png

左侧目录结构:


Paste_Image.png

父模块完成,打开子模块。以【maventest-a】为例:

  1. 在它的pom中增加<parent>标签并把【maventest-parent】的坐标添加进去。
  2. 将junit依赖的版本号和依赖范围删掉,保留<groupId>和<artifactId>。这是因为,父模块虽然引入了junit,但是还需要子模块声明<groupId>和<artifactId>才可以使用。
    如图:
Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 前言什么是 POMQuick Overview POM 常用元素 pom.xml 完整注释 参考 0 前言 什么是...
    阿父阅读 12,678评论 1 36
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,959评论 6 342
  • 好久没有更新了,在这里给大家说声抱歉,实在是因为最近加班忙成狗,还有一个原因是我想把《maven实战》这本书剩下的...
    小炼君阅读 1,462评论 0 51
  • 我jdk版本是1.7.0_95,在网上查了一下1.7属于java7maven3.3+版本都支持java7,所以我使...
    liangxifeng833阅读 1,299评论 0 2