专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Maven教程详解:Maven坐标与依赖详细讲解

Maven教程详解:Maven坐标与依赖详细讲解

更新时间:2020-08-28 08:57:52 来源:星辉 浏览1162次


大家可能对Maven坐标与依赖还不是很清楚,在Maven教程详解中就有这部分的内容,在这里小编先给大家大致介绍一下。


Maven教程详解


1. 坐标-找到项目依赖的重要依据


<groupId>cmbc.com.cn</groupId>    
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>


说明:


a、groupId、artifactId、version必须配置,packaging为可选配置,未配置则默认为jar


b、项目构件名称与坐标相对应,通常为artifactId-version.packaging,上述坐标对应构件名称为myapp-1.0-SNAPSHOT


2. 依赖配置


<project> 

  <dependencies>  可以包含多个<dependency>

    <dependency>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>...</version>
      <type>...</type>    坐标类型,对应项目坐标定义的packing
      <scope>...</scope>  依赖范围
      <optional>...</optional> 标记依赖是否可选
      <exclusions>  排除传递性依赖
        ...      </exclusions>
    </dependency>

 </dependencies>

</project>


3. 依赖详述


依赖范围


a、依赖范围种类


1.png


b、依赖范围的作用


Maven有编译、测试、运行classpath,依赖范围用于控制依赖与三种classpath的关系。


2.png


传递性依赖


a、项目A依赖于B,B依赖于C,则C是A的传递性依赖。Maven会将必要的间接依赖以传递式依赖的形式引入到项目。


b、确定传递性依赖范围


项目A依赖于B,B依赖于C,则B是A的第一直接依赖,C是B的第二直接依赖,C是A的传递性依赖。第一和第二直接依赖的范围决定了传递性依赖的范围,如下所示,左边为第一直接依赖范围,上面为第二直接依赖范围,中间为传递性依赖范围:


3.png


依赖调解


当项目多个直接依赖在其自己的依赖路径中分别依赖了同一个其它依赖,那么该引入哪一个路径上的依赖呢?


规则:不同路径长度,路径最短优先;相同路径长度,第一申明优先


可选依赖


假设A依赖于B,B依赖于C(可选),D(可选)(在B项目中的pom.xml文件依赖C和D,申明中均添加true)。可选依赖不具备传递性,因此A项目中不能引入C或D的依赖,如果需要使用C或D需要在A项目中直接依赖C或D


排除依赖


传递性依赖会隐式的引入很多依赖,极大简化了项目依赖的管理。但在以下情形需要使用排除依赖:


a、A依赖B,B依赖C,C(快照版本)不稳定可能会影响项目A。此时需要排除C而引入引入C的稳定版本。


b、可能由于版权原因,C(稳定版本)不在中央仓库,而D项目是一个可替代的实现。此时需要排除C而引入D


Maven教程详解:Maven坐标与依赖详细讲解


以上就是对Maven依赖管理的相关内容,如果还有不明白的地方,可以到技术文档中查看详细资料。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>