maven依赖范围scope详解

背景:在maven的pom.xml配置文件中,依赖有一个可选参数scope,它标识的是依赖的范围,具体是干什么用的?

举例:


     org.testng
     testng
     6.9.8
     test

maven在编译项目主代码的时候需要使用classpath,对于maven一共有3套classpath:编译classpath,测试classpath,运行classpath

scope就是用来控制依赖和这3套classpath的关系

scope的值有以下几个:

  • compile:默认值,对于三套classpath都有效

  • test:仅对测试classpath有效,因此只有在运行测试(例如junit)时才能import依赖

  • provided:对于编译和测试classpath有效

  • runtime:对于测试和运行classpath有效

  • system:依赖范围和provided一致,但是该依赖是存放于本地,需要由systemPath元素来显示指定依赖文件的路径


   javax.sql
   jdbc-stdext
   2.0
   system
   ${JAVA_HOME}/lib/rt.jar

  • import 对三套依赖classpath都没有影响,较少用

你可能感兴趣的:(maven依赖范围scope详解)