依赖配置
依赖指的是当前项目所需的jar包,一个项目可以设置多个依赖
依赖传递
当项目需要用到另外一个项目时,把另外一个项目的坐标复制到当前这个项目中。在当前项目中以以来的格式加入当前项目中。
如图:把项目Java02的坐标复制到Java03的坐标中
可以观察到Java03的依赖包多加入了一个依赖,被用的那个没有变化,是无法感知到的,用了别人的那个项目知道自己用了别人的。
从上图可知,Java02中用了log4j,Java03用了Java02的jar包,log4j也会传递过来,这就叫做依赖传递
依赖冲突
可选依赖
含义:对外隐藏当前所依赖的资源--不透明
例如:Java03中用了Java02的资源,但是Java02的资源有写隐藏掉,在Java03中不可见
在依赖中加入
<optional>true</optional>
排除依赖
主动的断开依赖的资源,被排除的资源无需指定版本---不需要
Java03中使用Java02的资源,在依赖里面添加<exclusions>下面的内容,主动断开依赖
<dependency>
<groupId>com.niit</groupId>
<artifactId>java02</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖范围
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
作用范围:
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围内)
是否参与打包(package指令范围内)
依赖范围传递性
带有依赖范围的资源在进行传递时,作用范围将收到影响