服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Maven多模块之父子关系的创建

Maven多模块之父子关系的创建

2021-07-22 15:59RainNenya Java教程

这篇文章主要介绍了Maven多模块之父子关系的创建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。

maven多模块(pom)

1.1 父模块创建

先创建个简单的空的maven project作为父项目

Maven多模块之父子关系的创建

Maven多模块之父子关系的创建

Maven多模块之父子关系的创建

1.2 子模块创建

重新创建一个maven project作为子项目

Maven多模块之父子关系的创建

Maven多模块之父子关系的创建

Maven多模块之父子关系的创建

1.3 父子模块(继承关系)

注意:此时父子模块为两个独立的项目。

Maven多模块之父子关系的创建

步骤1:子项目中加入<parent>节点,传入父项目完整坐标。

Maven多模块之父子关系的创建

步骤2:将子项目中的依赖都注释掉。

Maven多模块之父子关系的创建

注意:此时子项目中的没有了maven dependencies。

Maven多模块之父子关系的创建

步骤3:将子项目注释的依赖添加到父项目中。

Maven多模块之父子关系的创建

注意:此时子项目中的依赖又添加回来了。

Maven多模块之父子关系的创建

这种直接在父工程中加入<dependencies>的方式,让子工程可以直接复用依赖,但是缺点是所有的子项目无条件继承父工程所有依赖,所以如果要在父工程中添加依赖只能针对非常通用的依赖。

在父项目中再添加一个依赖。

Maven多模块之父子关系的创建

子项目同时也继承了新添加的依赖。

Maven多模块之父子关系的创建

那如果不想无条件继承父工程的所有依赖,而想让子项目自行选择需要的依赖又该如何做呢?

1.4 dependencymanagement

在父项目中用<dependencies>节点包裹<dependencies>节点,并且添加的是完整的依赖坐标(gav)。

Maven多模块之父子关系的创建

此时子项目中的maven dependencies又会消失,说明添加<dependencies>节点后,它并不负责相关依赖的下载。

子项目加入相应同样依赖,注意不要加versionversion继承自父项目),需要什么样的依赖就声明什么。

Maven多模块之父子关系的创建

特别注意,如果父项目提供了groupidversion,则删除子项目坐标中的groupidversion,直接继承父项目相关坐标。

Maven多模块之父子关系的创建

dependencymanagement的作用:依赖版本管理器

  1. 本身并不下载任何依赖,只是管理依赖的版本。依赖的下载依然需要单独的<dependencies>(不加dependencymanagement,额外写一个)去做
  2. 如果<dependencies>中的<dependency>没有声明版本号(version),maven会去寻找有无对应的dependencymanagement,当前工程没有就会向上找父工程。如果找到就以dependencymanagement中对应依赖声明的version为准,否则报错version is missing。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://segmentfault.com/a/1190000018528540

延伸 · 阅读

精彩推荐
  • Java教程Springmvc拦截器执行顺序及各方法作用详解

    Springmvc拦截器执行顺序及各方法作用详解

    这篇文章主要介绍了Springmvc的拦截器执行顺序及各方法作用,下面讲实现其接口的写法,先看一下这个接口的三个方法,需要的朋友可以参考下...

    开拖拉机的蜡笔小新7252021-05-20
  • Java教程Struts2下拉框实例解析

    Struts2下拉框实例解析

    这篇文章主要介绍了Struts2下拉框实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下...

    lavimer4272021-04-01
  • Java教程Java开源工具iText生成PDF简单实例

    Java开源工具iText生成PDF简单实例

    这篇文章主要介绍了Java开源工具iText生成PDF简单实例,本文给出了3段代码实例,讲解创建一个简单PDF文件,在PDF中添加表格以及在PDF中添加图片,需要的朋友可...

    junjie3812019-12-25
  • Java教程详解Java程序并发的Wait-Notify机制

    详解Java程序并发的Wait-Notify机制

    这篇文章主要介绍了详解Java程序并发的Wait-Notify机制,多线程并发是Java编程中的重要部分,需要的朋友可以参考下 ...

    低调小一3662019-12-30
  • Java教程基于RabbitMQ的简单应用(详解)

    基于RabbitMQ的简单应用(详解)

    下面小编就为大家分享一篇基于RabbitMQ的简单应用(详解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    未来有熊12242021-02-06
  • Java教程利用java批量给pdf加水印的方法示例

    利用java批量给pdf加水印的方法示例

    这篇文章主要介绍了利用java批量给pdf加水印的方法,文中给出了简单的示例代码,需要的朋友可以参考借鉴,下面来一起看吧。 ...

    Java之家2052020-08-21
  • Java教程java实现会反弹的小球示例

    java实现会反弹的小球示例

    这篇文章主要介绍了java实现会反弹的小球示例,需要的朋友可以参考下 ...

    Java教程网2052019-11-21
  • Java教程Java中反射详解

    Java中反射详解

    本文主要介绍了Java中反射的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧...

    风一样的码农3552020-08-13