5、maven的依赖和依赖范围
5.1、maven的依赖
我们使用 Maven 最主要的就是使用它的依赖管理功能。在项目中添加依赖,只需在pom.xml文件中的
即可。
5.2、maven的依赖范围
上面的依赖信息中除了目标 jar 包的坐标(gav)外还有一个 scope 设置,scope中的内容可以设置依赖的范围。
依赖的范围有几个可选值,我们经常使用的是:compile(默认)、test、provided 这三个。如果不设置scope,则默认scope的范围是compile。
[1]、从项目的结构理解 compile 和 test 的区别
compile范围依赖的JAR包,可以在主程序中(src/main/java包下)使用,也可以在测试程序中(src/test/java包下)使用。
test范围依赖的JAR包,只可以在测试程序中(src/test/java包下)使用,在主程序中是无法使用的。
[2]、从开发和运行这两个不同阶段理解 compile 和 provided 的区别 provided 表明该包只在编译和测试的时候使用,部署阶段并不使用,最常用的一个案例就是javax.servlet-api和jsp-api,web项目在开发阶段,会使用到servlet-api,部署阶段并不需要使用,因为servlet容器,如Tomcat内部已经集成了servlet-api,如果部署阶段也将servlet依赖打包到项目中,则部署的时候会和Tomcat内部的servlet-api冲突。 所以在使用maven构建的web项目中,依赖servlet-api时,要修改其依赖范围为compile | test | provided | |
主程序 | √ | × | √ |
测试程序 | √ | √ | √ |
参与打包 | √ | × | × |
参与部署 | √ | × | × |