maven聚合

聚合的目的是为了快速构建项目,当我们有几个maven模块,想要一次性构建,而不是到每个模块下面去执行maven命令,这时候就需要使用maven聚合(或者称为多模块)。

使用聚合的时候,我们需要新建一个maven项目,由它来控制构建其他的项目,其pom.xml配置与其他普通maven项目的区别主要在以下两个地方:

  1. 打包类型(packaging)必须为pom

  2. 需要在其中添加modules标签,在其中使用module标签包括需要同时构建的maven模块的名称路径,路径为相对于此pom.xml文件的路径(如果与pom.xml文件同级则直接写项目名,如果在上一级则写../项目名)。

这样当我们在此项目下执行构建的时候,就会同时构建其中配置的项目。

下面举一个配置文件的例子:

<project ......>
<groupId>XXX.XXX</groupId>
<artifactId>XXX</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>XX1</module>
<module>XX2</module>
</modules>
</project>

maven继承

继承的目的是为了消除重复配置,在项目中可以通过继承父模块的一些配置来简化配置文件,避免配置的重复。

父模块

1. 使用继承的时候,父模块的配置文件(pom.xml)中打包类型必须同聚合一样,为pom。

2. 依赖管理:为了避免子模块继承没有不必要的依赖,所以在父模块中并不引入实际的依赖,而是使用dependencyManagement元素,在其中声明的的dependencies不会在其本身(父模块)中引入依赖,也不会给它的子模块引入依赖。如果在子模块需要使用其中配置的依赖,则可以在子模块中声明,但是不需要声明版本号和依赖范围(已在父模块中声明),这样可以统一不同模块中的依赖版本。

3. 插件管理:同依赖管理,Maven提供了类似的pluginManagement元素来帮助管理插件,使用方式也基本相同。

子模块

子模块如果要继承父模块,则需在其pom.xml中需添加如下配置,同时其groupId和version会省略,直接继承父模块的配置。

<parent>
<groupId>XXX.XXX</groupId>
<artifactId>XX</artifactId>
<version>1.0</version>
<relativePath>XX/XX/pom.xml</relativePath>
</parent>

其中relativePath为父项目的pom.xml路径(如果没有配置此项,则默认为../pom.xml,即上级目录下的pom.xml),构建时会先根据relativePath查找,如果找不到,则会再从本地仓库查找。

注:maven聚合和继承可以同时使用。

maven聚合与继承笔记的更多相关文章

  1. 06 Maven 聚合和继承

    Maven 聚合和继承 1. 聚合 2. 继承 <parent> <groupId>org.apache.karaf.demos</groupId> <art ...

  2. 笔记:Maven 聚合和继承

    聚合模块 我们希望一次构建两个或更多项目,而不是到每个模块的目录下分别执行mvn命令,Maven 聚合这一特性就是为该需求服务的, 为了使用聚合,我们必须创建一个聚合模块,通过该模块与其他项目聚合,并 ...

  3. (十四)Maven聚合与继承

    1.Maven聚合 我们在平时的开发中,项目往往会被划分为好几个模块,比如common公共模块.system系统模块.log日志模块.reports统计模块.monitor监控模块等等.这时我们肯定会 ...

  4. Maven——聚合与继承

    原文:http://www.cnblogs.com/xdp-gacl/p/4058008.html 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 ...

  5. Maven聚合和继承的详细解释

    说到聚合与继承我们都非常熟悉,maven相同也具备这种设计原则.以下我们来看一下Maven的pom怎样进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高. ...

  6. maven课程 项目管理利器-maven 3-10 maven聚合和继承 4星

    本节主要讲了以下内容: 1 maven聚合 2 maven继承 1 maven聚合 <!-- 聚合特有标签 --> <groupId>com.hongxing</grou ...

  7. maven学习(十二)——maven聚合与继承实战

    聚合与继承实战 创建四个Maven项目,如下图所示:

  8. Maven 教程(14)— Maven聚合与继承

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79553011 1.Maven聚合 我们在平时的开发中,项目往往会被划分为好几个模 ...

  9. Java开发学习(三十)----Maven聚合和继承解析

    一.聚合 分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的install来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是比较麻烦的 如果四个项 ...

随机推荐

  1. 基于FPGA的三段式状态机

    状态机分类: 通常, 状态机的状态数量有限, 称为有限状态机(FSM) .由于状态机所有触发器的时钟由同一脉冲边沿触发, 故也称之为同步状态机. 根据状态机的输出信号是否与电路的输入有关分为 Meal ...

  2. nes 红白机模拟器 第1篇

    对比了很多种,开源的 NES 模拟器 VirtuaNES , nestopia , FakeNES , FCEUX , InfoNES , LiteNES 最后决定使用 LiteNES 进行移值,它是 ...

  3. django 从零开始 6 数据库模型增删改查

    这些都是凭记忆写下的,有些会漏掉,在之后的笔记中会写 和flask query不同,django是使用objects进行一个查询 查询 单条记录 django 模型.bojects.get(查询的字段 ...

  4. 【10】openlayers 视图view

    创建地图: //View对象代表地图的简单2D视图 //创建view let view = new ol.View({ center:[109,34],//视图的初始中心 maxZoom:18,//最 ...

  5. Java自学路线图之Java系统自学

    Java自学不是一朝一夕的事情.可以采用"懒开始"的方法,但是必须要坚持下去,才能真正自学Java掌握编程技术.那些企图学几天去包装一下找工作的,请绕道.如果你下定决心自学Java ...

  6. 上海月薪 1w 和家乡月薪 5000 你选择哪?

    如题,这是我在知乎上看到的一个热门话题--要现在的我来回答的话,毫无疑问会选择上海,即便月薪只有 5000 也去,还要趁早去. 有读者可能会质问我:"你之前不是说在三线城市洛阳工作很爽吗?怎 ...

  7. ES6、ES7、ES8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用于不能被重新赋值的变量 2. 箭头函数 我们经常要给回调函数给一个父级的this 常用办法就是 ...

  8. js 实现弹性运动的简单应用----导航栏中弹性

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 2019-2020-2 20174313张博 《网络对抗技术》Exp1 PC平台逆向破解

    写在前面 ·实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段——g ...

  10. try_catch_return

    1.情况一(try中有return,finally中没有return): public class TryTest{ public static void main(String[] args){ S ...