Maven笔记
Maven笔记
依赖冲突解决方案
依赖冲突: 相同jar包的不同版本被直接或间接包含进项目中
可通过mvn -Dverbose dependency:tree
查看依赖
解决依赖冲突
- 使用第一声明者优先原则
在pom.xml文件自上而下,先声明的jar坐标,就先引用该jar的传递依赖
- 使用路径近者优先原则
即直接依赖优先于间接依赖, 将需要使用的版本放入pom.xml中, 这样项目就会使用你需要的版本, 而不是通过间接依赖传递的版本
- 排除依赖
1 | <dependency> |
不想使用通过spring-context
间接传递的spring-core
- 版本锁定
使用dependencyManagement 进行版本锁定
pom.xml中:
1 | <dependencyManagement> |
锁定spring-core
使用5.2.0.RELEASE
版本
坐标
Maven 坐标包括 groupId、artifactId、version、packaging 等元素
groupId: 一般为公司URL的反写
artifactId: 项目的名称
version: 版本
packaging : 项目的打包方式,默认值为 jar==(可选)==
pom.xml文件
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
dependencies 元素可以包含一个或者多个 dependency 子元素,用以声明一个或者多个项目依赖,每个依赖都可以包含以下元素
- groupId、artifactId 和 version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven 根据坐标才能找到需要的依赖。
- type:依赖的类型,对应于项目坐标定义的 packaging。大部分情况下,该元素不必声明,其默认值是 jar。
- scope:依赖的范围。
- optional:标记依赖是否可选。
- exclusions:用来排除传递性依赖
仓库
查找顺序:
(1),在本地仓库中寻找,如果没有则进入下一步。
(2),在全局配置的私服仓库(settings.xml中配置的并有激活)中寻找,如果没有则进入下一步。
(3),在项目自身配置的私服仓库(pom.xml)中寻找,如果没有则进入下一步。
(4),在中央仓库中寻找,如果没有则终止寻找。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.