zoukankan      html  css  js  c++  java
  • Maven依赖范围及传递

    、Maven因为执行一系列编译、测试和部署运行等操作,在不同的操作下使用的classpath不同,依赖范围就是用来控制依赖与三种 classpath(编译classpath、测试classpath、运行classpath)的关系。

    Maven有以下几种依赖范围:

    compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;

    test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;

    provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;

    runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;

    system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。

    eg:

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <span style="font-family:Microsoft YaHei;">    <dependencies>  
    2.         <dependency>  
    3.             <groupId>javax.sql</groupId>  
    4.             <artifactId>jdbc-stdext</artifactId>  
    5.             <version>2.0</version>  
    6.             <scope>system</scope>  
    7.             <systemPath>${java.home}/lib/rt.jar</systemPath>  
    8.         </dependency>  
    9.     <dependencies></span>  

    import:导入依赖范围。

    2、依赖范围不仅可以控制与三种classpath的关系,还对传递性依赖产生影响,依赖关系图如下:

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    清除浮动的三种方式
    js控制滚动条默认在底部
    npm 基础命令
    package.json中^,~的区别
    mac 使用iTerm2快捷登录远程服务器
    iterm 分屏切换快捷键与配色设置
    git tag — 标签相关操作
    gulp iconfont
    webpack 3 升级 webpack4 个人笔记
    import * as x from 'xx' 和 import x from 'xx'
  • 原文地址:https://www.cnblogs.com/ganbo/p/4934644.html
Copyright © 2011-2022 走看看