_008_Maven_依赖的介绍

①依赖的目的

当 A jar 包用到了 B jar 包中的某些类时,A 就对 B 产生了依赖,这是概念上的描述。那么如何在项目
中以依赖的方式引入一个我们需要的 jar 包呢?
答案非常简单,就是使用 dependency 标签指定被依赖 jar 包的坐标就可以了。
<dependency>
<groupId> com.atguigu.maven </groupId>
<artifactId> Hello </artifactId>
<version> 0.0.1- - SNAPSHOT </version>
<scope>compile</scope>
</dependency>


②依赖的范围

大家注意到上面的依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这是依赖的范围。依赖的范
围有几个可选值,我们用得到的是:compile、test、provided 三个。


[1]从项目结构角度理解 compile 和 test 的区别
     结合具体例子:对于 HelloFriend 来说,Hello 就是服务于主程序的,junit 是服务于测试程序的。
HelloFriend 主程序需要 Hello 是非常明显的,测试程序由于要调用主程序所以也需要 Hello,所以
compile 范围依赖对主程序和测试程序都应该有效。
HelloFriend 的测试程序部分需要 junit 也是非常明显的,而主程序是不需要的,所以 test 范围依赖
仅仅对于主程序有效。

[2]从开发和运行这两个不同阶段理解 compile 和 provided 的区别


[3]有效性总结

③依赖的传递性

A 依赖 B,B 依赖 C,A 能否使用 C 呢?那要看 B 依赖 C 的范围是不是 compile,如果是则可用,否则不
可用。
Maven 工程  依赖范围  对 A 的可见性

④依赖的排除

如果我们在当前工程中引入了一个依赖是 A,而 A 又依赖了 B,那么 Maven 会自动将 A 依赖的 B 引入当
前工程,但是个别情况下 B 有可能是一个不稳定版,或对当前工程有不良影响。这时我们可以在引入 A 的时
候将 B 排除。
[1]情景举例

[2]配置方式

[3]排除后的效果

⑤统一管理所依赖 jar 包的版本

对同一个框架的一组 jar 包最好使用相同的版本。为了方便升级框架,可以将 jar 包的版本信息统一提
取出来
[1]统一声明版本号

[2]引用前面声明的版本号

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version> ${atguigu.spring.version}</version>
    </dependency>
    ...
</dependencies>

[3]其他用法

⑥依赖的原则:解决 jar 包冲突

[1]路径最短者优先

[2]路径相同时先声明者优先

这里“声明”的先后顺序指的是 dependency 标签配置的先后顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值