maven scope属性的区别和个人理解

本文,未全部做测试,如有错漏,求求各位指出!

 

 

使用时的区别,关注点:

  • 编码的时候,可否可以import包中的类
  • /test 单元测试,可否可以import包中的类
  • 打出的war包中,是否含有该jar包
  • 运行时,可否使用包中的类(往往是其他包中的interface或抽象类的实现类impl)
  • 应用场景

compile (编译)

默认

编程的时候,True

测试时,True

打包后,True

运行时,True

provided (已提供)

编程的时候,True

测试时,True

打包后,Flase

运行时,True

 

说明:

可以看到打包的时候,这个包不在war包内

实际是外部容器(如tomcat)拥有一毛一样的,不需要重复

排除后可以预防和容器内的jar版本冲突

runtime (运行时)

编程的时候,False(不能引用jar里的类)

测试时,False(同编程说明)

打包后,True

运行时,True

 

说明:

编译和测试的时候都没有用到,但运行的时候却存在着,并参与到了执行,

这里比较合适的场景是涉及到SPI(java SPI机制不了解的还请百度下吧,多学点有好处的

由系统或自己定义的其他包中的接口,尚且没有实现类。限制编程的时候不让拿到这个包里的impl这种实现类直接操作,只能用接口执行

也就解释成:运行时可用,编程时不让用

个人补充:强制多态,不让直接用实现类,可反射的方式

test (测试)

编程的时候,False

测试时,True

打包后,False

运行时,False

 

说明:测试的时候用一下,略

system (系统)

类似provided,不常用(你要 用到就再百度下)

  • 但是使用的时候需要额外指定路径

<systemPath>${java.home}/../lib/tools.jar</systemPath>

  • provide是容器提供(自动),system (手动)

import(导入)

父pom下才会使用到(可以百度下面这个标签怎么用)

标签<dependencyManagement>

统一管理子pom的版本是的一种方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值