学习笔记:maven依赖配置与依赖传递

我们为什么要使用依赖?
在dependencies中配置依赖,有了依赖我们的项目就能使用别人的资源而不用拷贝jar包

<!--配置junit依赖-->
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>
    

1. 依赖的四种类型

1.依赖传递: 每个项目中的pom文件里都有其坐标,直接复制粘贴到dependencies里面就可以使用别人的依赖了。
分为直接依赖;间接依赖

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
	<dependency>
		<groupId>com.itheima</groupId>
    	<artifactId>java02</artifactId>
    	<version>1.0-SNAPSHOT</version>
	<dependency>
</dependencies>

2.依赖传递冲突问题:
路径优先:版本的不同,层级越浅优先级越高
声明优先:配置顺序靠前的优先级高
特殊优先:同级配置的相同资源,后配置的优先级高

3.可选依赖:
optional ture,即可让他人看不到此依赖。

<optional>true</optional>

4.排除依赖:
主动不用这个依赖

<exclusions>
	<exclusion>
		<groupId>com.itheima</groupId>
    	<artifactId>java02</artifactId>
    	<version>1.0-SNAPSHOT</version>//不用写version
	</exclusion>
</exclusions>

2. 依赖管理

1. 依赖范围:

		<scope>xxx</scope>//不同的xxx对应不同的作用范围
scope 主代码 测试代码 打包 范例
compile(默认) Y Y Y log4j
test Y junit
provided Y Y servlet-api
runtime Y jdbc

传递性:看不懂没关系。
带有依赖范围进行传递依赖时,作用范围将受到影响。横轴是直接传递,纵轴是间接传递。

compile test provided runtime
compile compile test provided runtime
test
provided
runtime runtime test provided jdbc
上一篇:SpringCloudStart


下一篇:@RunWith注解找不到,怎么办?