讲讲 Maven 依赖
讲讲 Maven 依赖
- 1.依赖配置
- 2.依赖范围
- 3.依赖冲突
- 4.排除依赖
1.依赖配置
配置信息示例:
<project><dependencies><dependency><groupId></groupId><artifactId></artifactId><version></version><type>...</type><scope>...</scope><optional>...</optional><exclusions><exclusion><groupId>...</groupId><artifactId>...</artifactId></exclusion></exclusions></dependency></dependencies>
</project>
配置说明 :
dependencies
: 一个 pom.xml 文件中只能存在一个这样的标签,是用来管理依赖的总标签。dependency
:包含在 dependencies 标签中,可以有多个,每一个表示项目的一个依赖。groupId,artifactId,version
(必要):依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven 根据坐标才能找到需要的依赖。type
(可选):依赖的类型,对应于项目坐标定义的 packaging。大部分情况下,该元素不必声明,其默认值是 jar。scope
(可选):依赖的范围,默认值是 compile。optional
(可选): 标记依赖是否可选exclusions
(可选):用来排除传递性依赖,例如 jar 包冲突
2.依赖范围
classpath 用于指定 .class
文件存放的位置,类加载器会从该路径中加载所需的 .class
文件到内存中。
Maven 在编译、执行测试、实际运行有着三套不同的 classpath:
- 编译 classpath :编译主代码有效
- 测试 classpath :编译、运行测试代码有效
- 运行 classpath :项目运行时有效
Maven 的依赖范围如下:
- compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种都有效,即在编译、测试和运行的时候都要使用该依赖 Jar 包。
- test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试,而在编译和运行项目时无法使用此类依赖,典型的是 JUnit,它只用于编译测试代码和运行测试代码的时候才需要。
- provided :此依赖范围,对于编译和测试有效,而对运行时无效。比如
servlet-api.jar
在 Tomcat 中已经提供了,我们只需要的是编译期提供而已。 - runtime:运行时依赖范围,对于测试和运行有效,但是在编译主代码时无效,典型的就是 JDBC 驱动实现。
- system:系统依赖范围,使用 system 范围的依赖时必须通过 systemPath 元素显示地指定依赖文件的路径,不依赖 Maven 仓库解析,所以可能会造成建构的不可移植。
3.依赖冲突
1、对于 Maven 而言,同一个 groupId 同一个 artifactId 下,只能使用一个 version。
<dependency><groupId>in.hocg.boot</groupId><artifactId>mybatis-plus-spring-boot-starter</artifactId><version>1.0.48</version>
</dependency>
<!-- 只会使用 1.0.49 这个版本的依赖 -->
<dependency><groupId>in.hocg.boot</groupId><artifactId>mybatis-plus-spring-boot-starter</artifactId><version>1.0.49</version>
</dependency>
若相同类型但版本不同的依赖存在于同一个 pom 文件,只会引入后一个声明的依赖
讲讲 Maven 依赖相关推荐
- 【华为云实战开发】15.Maven依赖的JAR包下载慢?赶紧看过来
文:华为云DevCloud 亲亲土豆 相信许多JAVA开发者在日常工作中时常会碰到这种情况,那就是编译Maven工程时,工程所依赖的jar包文件下载非常慢,甚至经常出现下载不成功的问题,今天,小编就给 ...
- maven依赖的添加
maven可是个管理jar依赖的好玩意,不用再关心导这个jar包那个jar包,这个jar包是谁家的,和谁有啥关系.有了maven,简简单单就搞定,下面以eclipse为例,在一个springboot项 ...
- 又出现依赖冲突?试试 IDEA 解决 Maven 依赖冲突的高能神器!
以下文章来源方志朋的博客,回复"666"获面试宝典 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的.Maven的依赖机制会导致Jar包的冲突.举个 ...
- 是时候装逼了,试试 IDEA 解决 Maven 依赖冲突的高能神器!
点击关注公众号,Java干货及时送达 来源 | segmentfault.com/a/1190000017542396 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的 ...
- 解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:桔子214032 segmentfault.com/ ...
- 解决 Maven 依赖冲突的好帮手,必须了解一下!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:桔子214032 sf.com/a/119000001754 ...
- 碰到Maven依赖冲突,想砸电脑?这个IDEA插件必须了解一下...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:https://urlify.cn/mAj6Nj # 何为依 ...
- 漫画谈一下Maven依赖,百分之90的同学不知道!
Maven 依赖排除(Exclusions) 因为 Maven 构建的项目具有依赖可传递的特性,当你在 pom.xml添加某个依赖时,可能也会引入不需要的依赖到你的项目中,这将会会可能引起如下问题: ...
- [笔记]解决m2eclipse给项目添加maven依赖管理时可能不给项目的build path...
为什么80%的码农都做不了架构师?>>> 解决办法:在m2eclipse提供的菜单里关闭项目的Maven依赖管理,然后再启动Maven的依赖管理!!! 检查:1)查看项目的.c ...
最新文章
- ansible2.7学习笔记系列
- conda create -n python 3.6_conda创建python环境
- Hark的数据结构与算法练习之图书馆排序
- idea2020 需要热部署吗_小微制造企业需要部署MES系统吗?
- [html] 举例说明写一个button的按钮的方法有哪些?
- js练习8(幻灯片切换效果)
- 错误3:系统找不到指定的路径
- pythonmysql数据分析_利用Mysql进行python的数据分析
- 基于百度万年历定制化 1
- 小龙 Dev-C++ 5.16 发布了
- 牛客寒假算法集训营1 小a与军团模拟器(启发式合并)
- 武汉java开发工资一般多少_武汉Java开发工资是否还会增长?工资为什么那么高?...
- 拿到外卖后秒退单,一连12天吃霸王餐的女子栽了!
- 云安全类型及预防方法
- King of Glory刷金币脚本
- SQL语句如何实现模糊查询
- 2021-07-29 Ubantu18.04下Cura编译
- 计算机系统实验四:二进制程序逆向工程
- java计算机毕业设计-医院门诊分诊信息系统-源码+系统+mysql数据库+lw文档
- 开源媒介软文推广智能发布系统PHP源码
热门文章
- 专家观点 | 梁希同:为什么研究章鱼、乌贼 ——来自海洋智慧生物的启示
- 集中监控计算机主要功能
- CSS 背景+CSS文本样式
- Z世代工程文化:如何带好95后工程师组成的开发团队?
- 数据结构和算法 堆排序 (图解堆调整)
- SwiftUI onReceive 基础教程
- spring cloud gateway+nacos 服务下线感知延迟,未及时出现503,请求依然转发到下线服务
- VS2017生成解决方案报错,提示对路径的访问被拒绝
- python基础练习(3)
- Android[art]-Android dex,odex,oat,vdex,art文件结构学习总结