maven的<dependency>里面的<scope>import</scope>怎么理解?

这个概念不是很难理解,也不是很难解释,感觉大家对这个点的疑问并不多。
简单整理一下,也没有过多赘述。

官网:
官网Dependency Scope相关

compile/provided/runtime/test/import/system

示意图:
在这里插入图片描述
翻译:

说的是一个dependencyManagement中的dependency,如果scope是import形式的,那么这个dependency不参与依赖传递。
只是把dependency需要的依赖都取过来,像个占位符一样替换了就行。

在这里插入图片描述
或者说像前端框架里的占位符
JSP、.NET Razor 页面等里面的占位符,
总是就是个占位符的作用。

其他形式还是要具体看官网怎么说。


以下附上一点川哥的原话:
在这里插入图片描述

scope 有 test, compile, runtime

test在本地会引入,不过打包的时候不会被引入,用于maven test结构中代码的正常执行,但不打入包中,以减小线上部署包的尺寸。

compile为正常引入模式,表示编译会用它,那么大概率情况,执行也会用它,package会打包进去,至少会把依赖的class打包进去。

runtime的作用,是为了本地编译不出错,但package时不打包进去,但按照字面理解,这个玩意儿是要运行时用的啊,那怎么办呢?
	那就在运行环境中,必须有这个包。
	比如tomcat中,会有servlet/jsp api,这种api是在运行时使用的,tomcat中自带;
	但你项目中编译也会用到,为了本地编译不报错,就要引入,但为了不和线上tomcat发生版本冲突,就要标记为runtime,这样本地编译可用,但打包不引入。

综上,简而言之,maven依赖里面的这个scope,就像是java注解里面的那个@retention(xxx)那个意思一样,有点“生命周期”的感觉,能体会到,理解到这个意思,基本上就够了。具体只是生效到哪个阶段而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值