我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java maven进阶教学

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java maven进阶教学

1 Maven依赖范围 

1.1 依赖配置


<project>
  ...
	<dependencies>
    <denpendcy>
      <groupId></groupId>
      <artifactId></artifactId>
      <version></version>
      <type></type>
      <scope></scope>
      <optional></optional>
      <exclusions>
        <exclusion>
        	...
        </exclusion>
      </exclusions>
    </denpendcy>
  </dependencies>
</project>

在pom.xml文件中,根元素project下的dependencies标签中可以包含一个或者多个dependency元素,以声明一个或者多个项目依赖。每个依赖dependency标签中都应该包含以下元素。

groupId: 依赖组id,可以理解为java的包名,一般用域名倒写

artifactId: 可以理解为项目名或者依赖名

version:依赖的版本

type:依赖的类型,对应项目坐标定义的packaging,大部分情况下,该属性不必声明,其默认值为jar

scope:依赖的范围,这个对应的属性就比较多了,后续会做详细介绍

optional:标记依赖是否可选

exclusions:用来排除依赖的传递性,其中可以配置多个exclusion属性,每个标签对应着groupId、artifactId、version等三个基本属性

很多时候,大部分依赖声明只包含groupId、artifactId和version这三个指定基本坐标的元素;而在一些特殊情况下,其它元素至关重要,也就是上面提到的scope、optional和exclusions。

1.2 依赖范围概念

maven在编译项目主代码的时候需要使用一套classpath。举例来说:

所以,依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系的。
依赖具体范围:scope(依赖范围)共有五种,它们分别是compile、provided、runtime、test、system。

2 pom依赖传递性

在maven中,依赖传递是可以传递的,假设存在三个项目,分别是项目A,项目B,项目C。假设C依赖B,B依赖A,那么根据maven项目依赖的特征不难推出项目C也依赖于项目A.通过上图也可以看出,在项目中直接依赖了spring-webmvc,而spring-webmvc依赖了Spring-aop,spring-beans等,也就是在项目中有依赖了spring-aop和spring-beans等等

3 依赖冲突解决

在实际的 Maven 项目开发中,由于项目引入的依赖过多,遇到 jar 冲突算是一个很常见的问题了

·标注一:Maven Project,Maven 项目选项;

·标注二:Dependencies,项目依赖;

·标注三:Show Dependencies,展示项目依赖图

点击Show Dependencies 按钮之后,接下来就会出现以下内容。

在我们发现jar包冲突之后,就可以通过exclusion进行冲突的解决

4 分模块构建项目

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

4.1 创建一个父maven工程

1. 新建一个maven项目,选择存储位置,并选择创建一个简单的maven工程

2.创建第一个模块

3.创建第二个模块

4.选择继承的父模块

5.创建聚合工程C

这种项目结构主要应用在大型项目中,多人协作开发,小型项目 或 人员配置不足情况下不建议使用; 之前因为一直没有机会参与大型项目开发,或是这种分布式项目的搭建,网上也没有这方面系统全面的说明 ,可能真正用到这种架构的不需要自己动手去弄,等着别人搭好进去码代码就可以了

5 聚合和继承

Maven的聚合特性可以帮助我们把项目的多个模块聚合在一起,使用一条命令进行构建,即一条命令实现构建多个项目;

Maven的继承特性可以将各个模块相同的依赖和插件配置提取出来,在简化POM的同时还可以促进各个模块配置的一致性

5.1 聚合


<modules>
        <module>spring1</module>
        <module>spring2</module>
        <module>spring3</module>
</modules>

在前面的学习中,我们见过打包方式为jar和war的,但是聚合模块的打包方式必须为pom,否则无法完成构建。

5.2 继承


<parent>
<groupId>com.baidu</groupId>
<artifactId>miliao-rootpom</artifactId> 
<version>2.0.3</version>
</parent>

可继承的POM元素如下:

  • groupId:项目组ID,项目坐标的核心元素
  • version:项目版本,项目坐标的核心因素
  • distributionManagement:项目的部署配置
  • dependencies:项目的依赖配置
  • dependencyManagement:项目的依赖管理配置

5.3 聚合和继承的关系

虽然聚合模块和父模块经常合二为一,但是聚合和继承是两个不同的概念,其实是没有什么关系的。

聚合模块知道它聚合了哪些模块,但是被聚合的模块不知道聚合模块的存在;

继承父模块不知道子模块的存在,但是子模块都必须知道自己的父模块是谁。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注关注编程网的更多内容!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java maven进阶教学

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

(二)《SQL进阶教程》学习记录-

GROUP BY、PARTITION BY,分组取前几条,分组完整记录,排名、排序 (一) 《SQL进阶教程》学习记录--CASE(二) 《SQL进阶教程》学习记录--GROUP BY、PARTITION BY1、语法GROUP BY , , ,根据列分
(二)《SQL进阶教程》学习记录-
2016-09-20

Go 语言进阶freecache源码学习教程

这篇文章主要为大家介绍了Go 语言进阶freecache源码学习教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-15

vuex学习进阶篇之getters的使用教程

getters用于获取state里的数据,它类似于计算属性,如果要获取的数据并没有发生变化的话,就会返回缓存的数据,下面这篇文章主要给大家介绍了关于vuex学习进阶篇之getters的使用教程,需要的朋友可以参考下
2022-11-13

Powershell进阶学习(3) Po

我们首先要理解什么是远程管理,远程管理方式有很多比如最常用的Windows远程桌面管理,linux的SSH等。那么今天说起的是Windows一种最新的远程管理方式winrm(windows远程管理),当然在windowsServer2003
2023-01-31

C++ Boost Spirit进阶教程

Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
2022-11-16

python进阶学习路线(全)

学习路线:1.硬件:1、操作系统简介 2、第二篇:操作系统 2.linux基础:1、初始Linux 2、基本使用  3、Linux进阶 3.python基础 :1、python基础大纲
2023-01-31

【MySQL进阶教程】MySQL管理

前言 本文为 【MySQL进阶教程】MySQL管理 相关知识,下边将对系统数据库,常用工具(包括:mysql、mysqladmin、mysqlbinlog、mysqlshow、mysqldump、mysqlimport/source)等进
2023-08-16

SQL COUNT函数进阶学习

COUNT函数是SQL中常用的聚合函数,用于计算查询结果集中行的数目。除了简单地计算行数,COUNT函数还可以进一步学习和使用,例如:COUNT函数可以搭配DISTINCT关键字使用,用于计算唯一值的数目,例如:SELECT COUNT(D
SQL COUNT函数进阶学习
2024-08-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录