当前位置: 首页 > news >正文

1.Maven的坐标和依赖

【maven坐标】

```

1.groupId: 通常与域名反向一一对应

2.artifactId: 通常使用实际项目名称

3.version: 项目当前版本号

4.packaging:maven项目的打包方式,默认是jar

5.classifier: 定义构建输出的一些附属构件,例如:nexus-indexer-2.0.0.jar是主构件,nexus-indexer-2.0.0-javadoc.jar是附属构建

```

【依赖配置】

```

<dependencies>

<dependency>

<groupId>></groupId>

<artifactId></artifactId>

<version></version>

<type></type>

<scope></scope>

<optional></optional>

<exclusions>

<exclusion></exclusion>

</exclusions>

</dependency>

</dependencies>

```

```

1.groupId、artifactId、version:是依赖的基本坐标

2.type: 依赖类型,对应项目坐标定义的packaging,默认为jar

3.scope: 依赖范围,默认为compile。可选值为(compile,test,provided,runtime,system,import)

| Col1 | Col2 |

| --- | --- |

| compile | 编译依赖范围,对于编译、测试、运行三种classpath都有效 |

| test | 测试依赖范围,只对测试classpath有效,例如Junit |

| provided | 已提供依赖范围,对于编译和测试classpath都有效,但在运行时无效,比如servlet-api,编译和测试项目的时候需要改依赖,但在运行项目的时候,由于容器已经提供,就不需要maven重复的引入一遍 |

| runtime | 运行时依赖范围,对于测试和运行classpath有效,但在编译代码时无效。典型例子是JDBC驱动的实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在项目运行时,才需要实现上述接口的具体JDBC驱动。 |

| system | 系统依赖范围,对于编译和测试classpath都有效,但在运行时无效。使用system范围依赖时,必须通过systemPath元素显示的指定依赖文件的路径。|

| import | 导入依赖范围,该范围的依赖只在dependencyManagement元素下才有效果,使用该范围的依赖通常指向一个pom,作用是将目标pom中的dependencyManagement配置导入并合并到当前pom的dependencyManagement元素中|

```

【传递性依赖】

1. 如果A依赖B,B依赖C,那么C就是A的传递性依赖

【依赖调解】

1. 假如项目A有这样的依赖关系:A->B->C->X(1.0),A->D->X(2.0),X是A的传递性依赖,此时X出现两个,maven会选择路径最近的依赖,也就是路径最近者优先,如果路径长度都一样,那么在pom依赖中,谁最先被声明,谁会被解析使用。也就是说,如果存在依赖冲突:先考虑路径长度,然后再考虑声明顺序

【可选依赖】

1. 假如A->B,B->X(可选)|B->Y(可选),由于X、Y是B的可选依赖,依赖将不会得到传递,换句话说X、Y将不会对A有任何影响。

【排除依赖】

1. exclusions可以包含一个或者多个exclusion子元素,因此可以排除一个或多个传递性依赖

【优化依赖】

1. mvn dependency:list(查看项目中已解析依赖)

2. mvn dependency:tree(查看依赖树)

3. mvn dependency:analyze(分析依赖)

http://www.lryc.cn/news/8030.html

相关文章:

  • Jenkins 笔记
  • Python和Java语言,哪个更适合做自动化测试?
  • 互联网的路由选择协议
  • 接口幂等性处理
  • 数字孪生智慧机场:透视数字化时代下的航空运营
  • SpringBoot 文件上传后查看404的问题和解决404后需要访问两次才能查看的问题
  • 定时任务使用总结
  • Jira和Confluence Server版终止支持倒计时365天,企业应对策略汇总
  • GEE学习笔记九十一:栅格影像叠置分析
  • linux系统编程入门
  • JS代码安全防护常见的方式
  • PHP(13)HTTP协议
  • 基于支持向量机 (SVM) 用php实现预测气温
  • MySQL(五)
  • Linux常用命令2
  • 『C/C++养成计划』Visual Studio Code编辑器配置(外观通用型扩展Minmal)
  • 设计模式(适配器模式)
  • 在基于全志D1s的芒果派麻雀上运行国产开源rt-smart系统
  • 【代码随想录训练营】【Day15】第六章|二叉树|层序遍历|226.翻转二叉树|101.对称二叉树
  • 基于圆展开自适应三边测量算法的室内定位
  • 使用中断子系统实现对LED灯的控制
  • 《爆肝整理》保姆级系列教程python接口自动化(十五)--参数关联接口(详解)
  • 【JDK8】MyBatis源码导入Idea
  • 三层交换机DHCP中继
  • C++之RALL机制
  • 回溯算法章末总结
  • 【SpringBoot】为异步任务规划线程池
  • SAP ABAP 输出结果带有空格
  • Opengl ES之踩坑记
  • 设计模式第六讲:责任链模式和迭代器模式详解