maven 中的依赖范围与classpath的关系

来源:互联网 发布:无间道歌曲 知乎 编辑:程序博客网 时间:2024/04/29 11:17

测试技术交流群:161204772

悦分享测试联盟:136924235

悦分享主页:http://www.bjhxcc.com/special/2013/0822/yfx.htm

今天在使用maven构建测试的时候,console输出很多错误信息,大概是某些类找不到符号,查了相关资料发现maven是通过依赖范围来控制项目构建各个阶段(编译,测试,运行)所需的classpath

,maven有compile,test,provided,runtime,system几种依赖范围

1、compile:编译依赖范围,如果没有指定,默认情况下使用该依赖范围,该依赖范围对于编译,测试,运行三种classpath都有效

2、test:测试依赖范围,只对编译测试文件,运行测试文件时有效,即对于src/test/java下的文件有效

3、provided:已提供依赖范围,只对编译,测试时有效,对于运行时无效,如servlet-api,编译,测试时需要该依赖,但在运行时,由于容器已经提供,无需重复添加

4、runtime:运行时依赖,对于测试和运行classpath有效,但在编译主代码时无效,如,JDBC驱动实现,编译时只需要JDK提供的JDBC接口,只有在执行测试和运行项目时需要

5、system:系统依赖范围,与provided一致,不同的是使用该范围时必须使用systemPath显示指定依赖文件的路径,此依赖范围不是通过maven仓库解析,切通常与本机系统绑定,所以可能造成不可移植性


总结,对于webDriver自动化测试过程中,经常使用的依赖范围是test(只对测试有效),provided(只对编译,测试有效)