Maven学习(四)在命令行环境使用Maven--4.6依赖的范围

六、依赖的范围

1.依赖范围

当我们pom.xml文件中添加依赖时,通常会这样写,例如:

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

前面的章节,已经见过GAV的坐标系的作用了,那么scope标签到底有什么用呢?
scope标签代表引入jar包的作用范围
scope标签可选值有这几个:compile、test、provided、system、runtime、import

①compile和test对比

main目录test目录开发过程部署到服务器
compile有效有效有效有效
test无效有效有效无效

②compile和provide对比

main目录test目录开发过程部署到服务器
compile有效有效有效有效
provided有效有效有效无效

针对provided,代表已提供的意思。就是比如说 tomcat人家自带的一些jar包,在我们的工程中要配置为provided,不参与打包,避免引起冲突,用人家自己的,我们导入只在开发阶段使用。

③结论

其实maven设置scope标签是为了什么呢?就是为了特殊的比如test等情况的范围 和 默认情况的 区分开,而compile就是默认的,全部都有效的范围。
compile:通常使用的第三方框架的jar包这种在项目实际运行中真正要用到的jar包都是以compile范围进行依赖的,比如SSM框架等所需的jar包。主体功能里需要用到的jar包,99%

test:测试过程中使用的jar包,以test范围依赖进来。比如junit

provided:在开发过程中需要用到的服务器上的jar包,通常以provided范围依赖进来。比如servlet-api、jsp-api等。而这个范围的jar包之所以不参与部署、不放进war包,就是避免和服务器上已有的同类jar包产生冲突,同时减轻服务器的负担。说白了,就是“服务器上已经有了,你就别带了”

2.测试

在各个目录下,针对不同范围的引入,尝试引入jar包内的类即可。能引入就是有效,不能引入就是无效。

①验证compile范围对main目录有效

②验证test范围对main目录无效

③验证test和provided范围不参与服务器部署

打包后,查看lib目录下是否存在相关jar包,就能看出是否参与打包了。

④验证provided范围对测试程序有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值