4. Maven中管理依赖

4.1 介绍

依赖是一个项目运行时所需要的各种资源文件的配置信息,如版本号,群组等信息

4.2 配置格式

一般是在Maven构建项目中的pom.xml文件中来进行配置,主要格式如下:

<!--所有的依赖都配置在这对dependencies标签中间-->
<dependencies>
<!--一对dependency标签就是一组具体依赖-->
<dependency>
<!--以下3种标签就是依赖的坐标-->
<groupId>xxx</groupId>
<artifactId>xxx<artifactId>
<version>xx.xx</version>
</dependency>
</dependencies>

4.3 依赖具有传递性

当引用别人项目模块依赖时且别人项目模块恰好也引用了x资源文件的依赖时,你也可以使用他所引用的x资源文件 等同于 你也有x源文件的依赖,如图

鸿蒙maven 依赖 maven包依赖_java


等同于


4.4 依赖关系

主要分为两种依赖关系:

  • 直接依赖:pom文件中直接有具体的依赖配置
  • 间接依赖:依赖信息在所依赖的项目中的pom文件中
    备注
  • 特殊优先:当pom文件配置重复资源依赖时(同一pom文件),后配置的后生效
  • 路径优先:直接依赖优先级大于间接依赖
  • 声明优先:某一资源相同层配置(同一级别,不同pom文件),先配置的先生效

4.5 依赖隐藏

当别人引用自己项目时,自己配置的依赖不想被别人看见,可以在自身pom文件中用optional标签来解决,如下:

<dependency>
<!--某个依赖坐标下加入-->
<!--true为隐藏-->
<optional>true</optional>
</dependency>

4.6 排除依赖

当你引用别人项目时不想要他所带的依赖时,可在自身pom文件中引用别人项目依赖下面添加代码进行操作,如下:

<dependency>
<!--别人项目依赖坐标下加入-->
<exclusions>
<exclusion>
<!--不想要的依赖坐标,如Junit-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>

4.7 设置依赖生效范围

依赖默认工作范围为任何地方,可通过一对scope标签来进行设置想要的作用范围,作用范围主要如下:

  • 主程序范围,即main目录下
  • 测试程序范围,即test目录下
  • 打包范围,即package指令范围下
    scope标签属性与作用范围的关系:

Scope属性

是否作用主程序范围

是否作用测试程序范围

是否作用打包范围

compile默认




test




provided




runtime




依赖传递性对作用范围的影响,了解即可

项目A间接依赖 \ 项目A直接依赖

compile默认

test

provided

runtime

compile默认

compile

test

provided

runtime

test





provided





runtime

compile

test

provided

runtime