4.1 依赖范围

作用

  1. 首先,maven在编译项目主代码的时候需要使用一套classpath。
  2. 其次,maven在编译和执行测试的时候会使用另一套classpath。
  3. 最后,实际运行maven项目时,又会使用一套classpath。
  4. 即:
    1. 编译classpath、
    2. 测试classpath、
    3. 运行classpath

依赖范围就是用来控制依赖与这3种classpath的关系。

种类

compile:编译

  1. 默认使用就是该范围。
  2. 编译、测试、运行3种classpath都有效。

test:测试

  1. 测试。
  2. 例如junit

provided:已提供

  1. 编译、测试。
  2. 例如servlet-api。运行的时候容器已经提供,不需要maven项目重复引入。

runtime:运行时

  1. 测试、运行。
  2. 例如jdbc驱动实现,项目主代码编译只需要jdk提供的jdbc接口,只有执行测试或运行项目时才需要。

system:系统

  1. 与provided一样,对编译、测试有效。
  2. 但是,使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用。
<dependency>
    <groupId>javax.sql</groupId>
    <artifactId>jdbc-stdext</artifactId>
    <version>2.0</version>
    <scope>system</scope>
    <systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>

import:导入

  1. 不会对3中classpath产生实际影响。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • maven项目中需要使用到其它依赖时,则需要在pom.xml中配置<dependency>元素也就是依赖声明,这样...
    zlcook阅读 2,043评论 1 3
  • 依赖范围 Maven 在编译项目主代码的时候需要使用一套 classpath。其次,在编译和执行测试的时候会使用另...
    杰哥长得帅阅读 376评论 0 0
  • 依赖详解 groupId、artifactId、version依赖的基本坐标,对任何一个依赖来说坐标是最重要的,M...
    SonyaBaby阅读 632评论 0 2
  • 依赖是Maven中最关键的部分,使用Maven管理项目很大的原因是因为他的依赖管理功能。 全部章节传送门:Mave...
    简单一点点阅读 886评论 0 3
  • 经典电商模式 1.假如你是一个移动电源/服装/化妆品/或其他商品的商家,打算去天猫或京东开个专卖店,比...
    cf81923e5cd9阅读 319评论 0 0

友情链接更多精彩内容