maven依赖范围scope详解

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

举例:

<dependency>
     <groupId>org.testng</groupId>
     <artifactId>testng</artifactId>
     <version>6.9.8</version>
     <scope>test</scope>
</dependency>

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元素来显示指定依赖文件的路径

<dependency>
   <group>javax.sql</group>
   <artifactId>jdbc-stdext</artifactId>
   <version>2.0</version>
   <scope>system</scope>
   <systemPath>${JAVA_HOME}/lib/rt.jar</systemPath>
</dependency>
  • import 对三套依赖classpath都没有影响,较少用
    原文作者:测试你个头
    原文地址: https://www.jianshu.com/p/a27dc9832a7c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞