依赖寻找顺序
首先会去本地仓库寻找,然后会去公司的私服仓库寻找,一般私服仓库存的都是公司自己开发的 jar 包,最后会去 由Apache 团队来维护中央仓库寻找,一旦在一个地方找到就不再寻找
如果确认这个依赖的唯一元素
我们利用 groupId、artifactId、version 标签来确认这个依赖的唯一坐标
<groupId>:企业网址反写+项目名
<artifactId>:项目名-模块名
<version>:当前版本
<groupId>com.juejin.business</groupId>
<artifactId>juejin-image-web</artifactId>
<version>1.0.0-SNAPSHOT</version>
Scope范围有哪些
我们常用的 scope 的范围是
| compile | test | provided | runtime | |
|---|---|---|---|---|
| 主程序 | √ | x | √ | x |
| 测试程序 | √ | √ | √ | x |
| 参与部署 | √ | x | x | √ |
- compile:默认范围,编译、测试、运行都有效
- provided:编译和测试有效,最后运行不会被加入,如tomcat依赖
- runtime:在测试和运行的时候有效,编译不会被加入,比如jdbc驱动jar
- test:测试阶段有效,比如junit
- system:与provided一致,编译和测试阶段有效,但与系统关联,可移植性差
- import:导入的范围,它只是用在dependencyManagement中,表示从其它的pom中导入dependency的配置
依赖范围的传递性
如何排除依赖
有俩种方法 第一种:
<dependency>
<groupId>com.juejin.business</groupId>
<artifactId>juejin-image-web</artifactId>
<version>1.0.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>com.juejin.business</groupId>
<artifactId>juejin-convert-web</artifactId>
</exclusion>
</exclusions>
</dependency>
第二种:
<dependency>
<groupId>com.juejin.business</groupId>
<artifactId>juejin-convert-web</artifactId>
<version>1.0.0-SNAPSHOT</version>
<optional>true</optional>
</dependency>
| 重要英语 | 翻译 |
|---|---|
| Maven | |
| groupId | 项目名 |
| artifactId | 项目名-模块名 |
| version | 当前版本 |
| compile | 默认范围,编译、测试、运行都有效 |
| provided | 编译和测试有效,最后运行不会被加入,如tomcat依赖 |
| runtime | 在测试和运行的时候有效,编译不会被加入,比如jdbc驱动jar |
| test | 测试阶段有效 |
| system | 与provided一致,编译和测试阶段有效,但与系统关联,可移植性差 |
| import | 导入的范围,它只是用在dependencyManagement中,表示从其它的pom中导入dependency的配置 |