JUnit是Java社区事实上的单元测试标准,这个依赖特殊的地方在于一个值为test的scope子元素,scope用来定义依赖范围。该依赖只会被加入到测试代码的classpath中。对于项目主代码,该依赖是没有任何作用的.JUnit是单元测试框架,只有在测试的时候才需要,因此使用该依赖范围。
Maven在编译项目主代码的时候需要使用一套classpath。在编译和执行测试的时候会使用另外一套classpath。实际运行maven项目的时候,又会使用一套classpath。
所以依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系。maven有以下几种依赖范围:
**▶compile:**编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三 种classpath都有效。典型的例子是spring-core,在编译、测试和运行的时候都需要使用该依赖。
**▶test:**测试依赖范围。使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依赖。典型的例子是JUnil,它只有在编译测试代码及运行测试的时候才需要。
**▶provided:**已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classPath有效,但在运行时无效。典型的例子是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要Maven重复地引人—遍。
**▶runtime:**运行时依赖范围。使用此依赖范围的Maven依赖,对于测试和运行classpath有效,但在编译主代码时无效。典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。
**▶system:**系统依赖范闱。该依赖与三种classpath的关系.和provided依赖范围完全一致。但是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植。因此应该谨慎使用。systempath元素可以引用环境变量。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后
面试题文档来啦,内容很多,485页!
由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。
1111道Java工程师必问面试题
MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:
Elasticsearch 24 题 +Memcached + Redis 40题:
Spring 26 题+ 微服务 27题+ Linux 45题:
Java面试题合集:
)]
Java面试题合集:
[外链图片转存中…(img-syHmdtQP-1711016814706)]