maven的pom.xml配置文件里面的project根节点下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个依赖,每个依赖都可以包含的元素:
  groupId,artifactIdversion:依赖的基本坐标,对于任何依赖来说,基本坐标最重要,maven根据坐标才能找到对应的依赖;

  type:依赖的类型,对应项目坐标定义的packaging,大部分情况下无须声明,默认是jar;

  scope:依赖的范围;

  optional:标记依赖是否可选;

  exclusions:用来排除传递性依赖;

  一般情况下,大部分依赖声明只包含基本坐标,一些特殊情况,其他元素的地位也至关重要;

  下面是scope元素的几个参数,都有自己的范围,超出范围将会无效:

  compile:编译依赖范围,若未指定依赖范围,会默认该依赖范围,使用该依赖范围的maven依赖,对于编译、测试、运行的classpath都有效;比较典型的就是spring-core,在编译、测试和运行项目的时候都需要使用到该依赖;

  test:测试依赖范围,使用该依赖范围的maven依赖,只对测试的classpath有效;典型的就是Junit,它只有在编译测试代码的时候才有效;

  provided:已提供依赖范围,使用该依赖范围的maven依赖,只对编译和测试的classpath有效,但在运行时无效;典型的就是servlet-api,编译和测试的时候需要该依赖,但在运行项目的时候,由于容器已经提供了,就不需要maven重复的引入一遍;

  runtime:运行时依赖范围,使用此类范围的maven依赖,对于测试和运行的classpath有效,但在编译主代码的时候无效。典型的例子是JDBC驱动的实现,项目住代码只需要JDK提供JDBC的接口,只有在测试或者运行项目的时候才需要实现上述接口的具体实现;

  system:系统依赖范围,使用此类范围的maven依赖,也是对应编译和测试的classpath有效,运行时无效,但是使用该范围的依赖,必须显式的通过systemPath指定依赖的路径(因为此类依赖不是通过maven仓库解析的,而往往与本地机绑定,可移植性比较差,谨慎使用),可以引用环境变量,例子如下:

<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${jave.home}/lib/rt.jar</systemPath>
</dependency>

  以下是一个简单的表格(Y代表有效,N代表无效);

依赖范围(scope) 对于编译classpath有效 对于测试classpath有效

对于运行classpath有效

典型例子
compile Y Y Y spring-core
test N Y N Junit
provided Y Y N servlet-api
runtime N Y Y JDBC驱动实现
system Y Y N 本地的,Maven仓库以外的类库文件

maven下的经常使用的几个元素以及依赖范围的一些知识的更多相关文章

  1. Maven下java.lang.NoClassDefFoundError

    本文转载自:http://blog.csdn.net/qqhjqs/article/details/51491516 使用maven管理web项目中jar包之间的依赖,非常的方便好用,但是有时也会出现 ...

  2. maven下拉项目不能同步

    maven下拉项目不能同步,如下图: 解决方法: 对项目右键,team, 选择这里 我选择第一项,有的需要根据情况选择第二项,如果点击完成后,还是不能同步代码,对项目右键,team,disconnec ...

  3. JavaScript向select下拉框中加入和删除元素

    JavaScript向select下拉框中加入和删除元素 1.说明 a   利用append()方法向下拉框中加入元素 b   利用remove()方法移除下拉框中最后一个元素 2.设计源代码 < ...

  4. JavaScript向select下拉框中添加和删除元素

    JavaScript向select下拉框中添加和删除元素 1.说明 a   利用append()方法向下拉框中添加元素 b   利用remove()方法移除下拉框中最后一个元素 2.设计源码 < ...

  5. npm install 命令。默认会找到当前路径下的package.json。然后安装其中的依赖

    npm install 命令.默认会找到当前路径下的package.json.然后安装其中的依赖 By default, npm install will install all modules li ...

  6. maven下读取资源文件的问题(转)

    原文链接:http://shenchao.me/2016/04/20/maven%E4%B8%8B%E8%AF%BB%E5%8F%96%E8%B5%84%E6%BA%90%E6%96%87%E4%BB ...

  7. Maven下使用Jetty进行Debug

    1.环境和条件 Maven-3.0.3Eclipse请阅读者事先具备一定maven知识 2 配置2.1 添加Jetty插件 在pom.xml中加入如下代码段 <plugin> <gr ...

  8. maven下配置pom.xml

    博主原创,转载请注明. 遇到的问题: 缺少依赖库.解决办法: 在build标签中添加: <plugin> <groupId>org.apache.maven.plugins&l ...

  9. maven下的sqlserver配置jar包

    看了两天的maven,开始把之前做的ssm项目搭建成maven项目,结果在sqlserver的依赖包上受阻,sqlserver需要sqljdbc4.jar包,经过一系列百度教程才得以解决,现在总结一下 ...

随机推荐

  1. 【Linux 进程】fork父子进程间共享数据分析

    之前我们通过fork()函数,得知了父子进程之间的存在着代码的拷贝,且父子进程都相互独立执行,那么父子进程是否共享同一段数据,即是否存在着数据共享.接下来我们就来分析分析父子进程是否存在着数据共享. ...

  2. python函数的万能参数

    我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数 def test(*args,**kwargs): print(args,kwargs) 然后定义两个变量 l = [1,2, ...

  3. webpack(二) 根据模板生成简单的html文件

    (一)使用webpack 根据模板生成HTML,首先需要安装插件 html-webpack-plugin. 在工程文件夹安装插件 命令如下: npm install html-webpack-plug ...

  4. org.springframework.web.util.Log4jWebConfigurer

    org.springframework.web.util.Log4jWebConfigurer @Deprecated Deprecated. as of Spring 4.2.1, in favor ...

  5. c#devexpress GridContorl添加进度条

    demo 的实现图 下边是步骤和代码 1定义 时钟事件,定时的增加进度条的增量. 2:  添加进度条 3;定义字段属性 using System; using System.Collections.G ...

  6. String 练习

    package com.hanqi; import java.util.Random; public class Text { public static void main(String[] arg ...

  7. hdu 1686 & poj 2406 & poj 2752 (KMP入门三弹连发)

    首先第一题 戳我穿越;http://acm.hdu.edu.cn/showproblem.php?pid=1686 题目大意好理解,每组输入一个子串和一个母串,问在母串中有多少个子串? 文明人不要暴力 ...

  8. RNA测序相对基因表达芯片有什么优势?

    RNA测序相对基因表达芯片有什么优势? RNA-Seq和基因表达芯片相比,哪种方法更有优势?关键看适用不适用.那么RNA-Seq适用哪些研究方向?是否您的研究?来跟随本文了解一下RNA测序相对基因表达 ...

  9. Codeforces 545E. Paths and Trees 最短路

    E. Paths and Trees time limit per test: 3 seconds memory limit per test: 256 megabytes input: standa ...

  10. [SoapUI] Groovy获取HTTP Status

    def value = messageExchange.responseHeaders["#status#"] def httpResponseHeaders = context. ...