maven的依赖范围详解

什么是依赖范围 
  在maven项目中, 有时必须设定jar包在什么阶段需要。例如我们在使用junit.jar时,我们可以设定此jar包只在测 试阶段有效; 在使用数据库的驱动时,在编译时不需要,我们可以设点只在测试和运行时有效;这就是依赖范围。 为什么要设置依赖范围 
  在引入某些jar包时,如果不设定依赖范围,项目在运行时会出现jar包冲突问题。例如:在tomcat工具中存在 servlet-api.jar ,如果在Maven的web项目中引入servlet-api-xx.jar时,没有设置依赖范围,,那么此项目在运行时 会发生jar包的冲突问题。 依赖范围 
  根据jar包使用阶段分为五种依赖范围,分别是:compile,provided ,runtime ,test , system 。

compile: 编译范围,如果项目在编译,测试,运行时都需要此jar包时选择。注意:由于运行时需要此jar 包,所以依赖jar包会被打到项目包中。 provided:某jar包在某容器中提供了,选择使用。例如:servlet-api-xx.jar在tomcat容器中已提供,所以项 目在运行时就不能再次提供,否则会出现冲突问题,如果选择了此依赖范围不会打包到war或者jar包中。 runtime : 在测试和运行时有效,编译时无效。例如: ojdbc.jar,Oracle的驱动包,在编译时是不需要的,因 为我们只用了一个字符串类型的驱动类(Class.forname("oracle.jdbc.driver.OracleDriver"))。 test:只在测试的时候有效。例如:junit-xx.jar只在测试的时候才需要。 system:此范围是引用本地的jar包,或者引用项目中lib目录中的jar包。 

猜你喜欢

转载自blog.csdn.net/weixin_42386438/article/details/82355232