Maven中的依赖

所有的依赖都是通过坐标来进行存储的(GAV–>groupId、artifactId、version)。Maven坐标就是为了定位一个唯一确定的jar包。

1.组成

我们经常用到的一些开源框架,他们的名称和版本号以及版本的类型就确定了他们的唯一性,我们引用这些开源框架时,就可以通过坐标来指定他们

他们的唯一性是由三个点组成的
groupId: 代表当前项目组织名称
artifactId:代表当前项目名称
version: 代表当前项目的当前版本

2.查询的地方

http://mvnrepository.com这个网址就可以提供了jar的查询

使用maven还可以把项目分离拆开,即把service,dao等等子模块进行拆开;

3.依赖的范围

1、test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖。

2、compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去。默认值。

3、provided依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突。

4、runtime在运行的时候依赖,在编译的时候不依赖。

说明如果范围是test,是不会向下传递的。但是compile是可以向下传递的
自己亲测:创建两个maven工程,都打开他们的pom.xml文件,在里面这上坐标jar然后,让一个项目去依赖另外一个项目,这时,被依赖的项目里面的jar包,如果不是test范围的就可以在那个项目中显示出来
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

依赖的传递,同版本冲突

第一种情况:也就是说在同一个项目中如果,放进了两个相同的jar包,但是版本不一样,那么就会选择位置最低下版本的jar包,而会抛弃掉最上面的jar。取决于你放的位置。在这里插入图片描述

第二种情况:就是在两个项目中,项目B要依赖项目A的,但是在这两个项目中都有相同的依赖jar座标,但是版本不一样,这个时候就会选择直接依赖,就是会优先选择自己的依赖;

在这里插入图片描述

可以看到项目02中的mysql驱动包是选择自己的,虽然它有依赖别人的,但是会优先选择自己的;
以直接依赖的版本为准

希望精确地控制依赖的jar包,就要使用排除《排除依赖》

在这里插入图片描述

可以把依赖项目中的不想要的jar排除开

可选依赖

这个选项就是根据jar包座标中的属性来设置的
当这个属性设置为true是这个依赖不会向下传递
如果设置成为了false就会向下传递在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值