Maven中依赖范围对传递依赖的影响

1.问题描述

当在写junit测试时发现,代码报出没有找不到类的错误信息:

在这里插入图片描述
是因为没有junit.jar引起的!为什么会这样呢?我们ssm_dao模块中有junit依赖而ssm_service模块依赖了ssm_dao,难道junit不应该传递过来吗?

2.依赖范围对传递依赖的影响

是因为依赖会有依赖范围,依赖范围对传递依赖也有影响,例如有A、B、C,A依赖B、B依赖C,C可能是A的传递依赖,如下图:
在这里插入图片描述
最左边一列为直接依赖,理解为A依赖B的范围,最顶层一行为传递依赖,理解为B依赖C的范围,行与列的交叉即为A传递依赖C的范围。

3.举例

举例1
比如 A对 B 有 compile 依赖,B 对C有 runtime 依赖,那么根据表格所示A对C 有 runtime 依赖。

ssm_dao依赖junit,scop为test
ssm_service依赖ssm_dao.
在这里插入图片描述
所以ssm_dao工程所依赖的junit的jar没有加入到ssm_service工程。
举例2
如果修改ssm_dao工程依赖junit的scop为compile,ssm_dao工程所依赖的junit的jar包会加入到ssm_service工程中,符合上边表格所示,查看下图红色框内所示:
在这里插入图片描述

4.单元测试

遇到依赖没有传递过来的问题我们通常的解决方案是在本工程中直接添加依赖:
把如下依赖添加到ssm_service的工程中:

在这里插入图片描述
再看测试代码也不报错了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值