Maven的依赖构件包含一个依赖范围属性,这个属性描述的是三套classpath的控制,即编译、测试、运行。

举个例子Junit依赖只是在测试范围(classpath)使用,而在运行的时候不使用,还有Servlet api在编译的时候使用,在运行部署的时候不使用,因为大部分容器都已经提供该依赖支持。

  <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>

下面对Maven依赖范围进行逐一说明:

1. compile: 编译依赖范围。

默认的依赖范围,使用此依赖范围会对编译、测试、运行三套classpath都有效。

2. test: 测试依赖范围。

使用此依赖范围只会对测试有效。比如 Junit

3. provided: 已提供的依赖范围。

使用此依赖范围会对编译和测试有效,对运行无效。比如 Servlet-api ,运行的时候容器已经提供

4. runtime: 运行时的依赖范围。

使用此依赖范围会对测试和运行有效,对于编译无效。 比如 JDBC驱动依赖

5. system: 系统依赖范围。

和provided依赖范围完全一样,由于此类依赖不是通过Maven仓库解析的,而是和本机系统绑定的,使用后可能会造成不可移植性,请谨慎使用此种依赖范围。

6. import: 导入依赖范围。

该依赖不会对三套classpath产生影响。这种依赖范围只会在<dependencyManagement>标签中使用,意思是说使用此种依赖范围通常是指向一个POM类型的Maven项目,将依赖一个POM类型的项目中的所有依赖全部导入到目标项目中来,是除了复制依赖、继承依赖的另外一种使用依赖的方式,可以说Maven还是非常的灵活的。

Maven的依赖范围的更多相关文章

  1. [转]使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 。

    使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://re ...

  2. Maven间接依赖冲突解决办法

    如果项目中maven依赖太多,由于还有jar之间的间接依赖,所以可能会存在依赖冲突.依赖冲突大部分都是由于版本冲突引起的,查看maven的依赖关系,可以找到引起冲突的间接依赖 如上图,通过Depend ...

  3. maven 检查依赖冲突和版本冲突

    maven 检查依赖冲突和版本冲突   在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:   1 2 3 mvn -U clean package - ...

  4. maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)

    我们知道,maven的依赖关系是有传递性的.如:A-->B,B-->C.但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖.在maven的依赖管理中,有两种方式可以对依赖 ...

  5. Idea maven tomcat 配置热更新 以及 maven jar依赖

    看了视频 实在忍不住上了idea的贼船 不过这玩意确实有点坑爹,因为用的人少,所以很多配置是有问题的 例如maven配置tomcat热更新 以及tomcat的maven配置 我这里放几张图作为备用 配 ...

  6. Eclipse+Maven构建web项目及部署时Maven lib依赖问题的解决

    目录 Eclipse中m2e插件构建web项目的步骤 Maven工具构建web项目再导入Eclipse的步骤 [一].Eclipse中m2e插件构建web项目的步骤 第一步:创建项目,按照 New – ...

  7. Maven入门-4.Maven的依赖

    1.Maven的依赖1.1 添加依赖1.2 依赖范围(sope)依赖范围与classpath的关系1.3 依赖的传递性1.2.1 依赖传递性的冲突问题1. 第一种情况2. 第二种情况1.2.2 通过e ...

  8. maven的依赖特性

    若排版紊乱可查看我的个人博客原文地址 maven的依赖特性很多很杂,这里大概总结一下,maven的依赖特性主要是依赖范围和传递依赖,前者会影响后者,这篇文章会介绍传递依赖的传递原则,出现冲突传递依赖默 ...

  9. Maven json-lib依赖下载不下来解决方案

    今天Maven添加依赖时候发现json lib这个包引入之后,死活出不来JSONObject这个类,打开Maven Project视图,发现json-lib这个包没下下来,以前也遇到过类似问题,都是网 ...

随机推荐

  1. BZOJ1047: [HAOI2007]理想的正方形

    传送门 蛤省省选果然水啊,我这种蒟蒻都能一遍A. 横向纵向维护两个单调队列,做两次求最大和最小的,总复杂度$O(NM)$ 码农题,考察代码实现能力 //BZOJ 1047 //by Cydiater ...

  2. log4net详解(转载)

    1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是介绍如何在Visual S ...

  3. LED数码管显示实验

    1.代码: #include <reg52.h>typedef unsigned char  u8;typedef unsigned int   u16;sbit seg_sel = P1 ...

  4. Android学习笔记——ProgressBar

    该工程的功能是实现进度条的显示,按以下按钮进度条增加10% 以下代码是MainActivity.java中的代码 package com.example.progressbar; import and ...

  5. hdu 1873 看病要排队(优先级队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题目大意: 三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后.I ...

  6. wordpress后台404页面

    就在刚刚,boss需要看公司网站后台,网站是用wordpress搭的,发现全是404,蛋疼,于是google,下面是解决办法: location / { if (-f $request_filenam ...

  7. ecshop 后台模板设置-》设置模板

    ecshop后台“设置模板”出现问题 问题1:不能出现特殊符号  / <!-- TemplateBeginEditable name="5F生活数码/手机" -->&l ...

  8. fixed的left:50%,漂浮

    .floor-box{width: 44px; border: 1px solid #ccc; position: %; z-index: } 漂浮距离,距中间50% .floor-box{width ...

  9. Java中hashCode的作用

    转  http://blog.csdn.net/fenglibing/article/details/8905007 Java中hashCode的作用 2013-05-09 13:54 64351人阅 ...

  10. OC-封装

    一.      set方法和get方法 1.          set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水 ...