理解maven项目的pom.xml文件中,<scope>标签的作用——作用域以及依赖传递
问题介绍:
在maven项目中,最关键的就是pom.xml这个文件,这个文件是用来导入maven项目依赖的jar包以及一些插件等。
在这个文件中导入jar包使用的标签是<dependency>,而在这个标签下有一个子标签,叫做<scope>,它是有什么用处呢?下面我就来讲讲它的作用。

内容讲解:
<scope>这个标签的主要作用有三个:
1、确定导入的jar包的有效区域。这里说的区域分别为:
a)主程序区域:

b)测试程序区域:

2、是否参与maven项目的打包:
项目要部署到服务器上,是需要先将项目打包的。然而,并不是你导入项目的所有Jar包都需要一同被打包,比如junit这个专门用来编写测试的包及其依赖,就没有必要一起打包进项目中。使用scope的不同取值就能告诉maven哪些jar包需要被一同打包,哪些不用。
<scope>标签的取值(只介绍主要的三种):
1、compile(默认)
导入的jar对主程序是否有效:有效
导入的jar对测试程序是否有效:有效
是否参与项目的打包:参与
例如:在maven项目中使用了sping等第三方的jar包,则需要一同打包再部署到服务器。
2、test
导入的jar对主程序是否有效:无效
导入的jar对测试程序是否有效:有效
是否参与项目的打包:参与
例如:junit包,只在开发中测试使用,并不需要打包到服务器。
注:在eclipse中,若<scope>的取值若为test,则在右侧目录中,包会显示为灰色。如下图:

3、provided
导入的jar对主程序是否有效:有效
导入的jar对测试程序是否有效:有效
是否参与项目打包:不参与
例如:servlet-api,tomcat服务器自带,会自动添加到你部署的项目中,你开发项目时要用吗,但是不需
要一起打包。
注意:
<scope>中的值不能随便乱写,需要合理的选择,否则程序可能会出现错误。比如说,如果在导入一些Tomcat服务器自带的依赖(如:servlet-api)时使用了compile这个取值,项目运行时就会产生错误,因为Tomcat自带这些依赖,而你还将自己额外加入的相同的依赖部署到Tomcat下,两者就会差生冲突。而若是你在导入一些Tomcat没有但程序运行时需要的依赖时,使用了test或者provided,也会出错,因为这些依赖将不会一起被打包部署到Tomcat下,运行时就将找不到这些依赖。
scope对依赖传递的影响
什么是依赖传递?
就是假设你有一个maven项目叫A,你在这个项目中添加了一个依赖,这个依赖是你的另一个maven项目B,你在这个被依赖的项目B中添加一些依赖,这些依赖也会自动地添加到A中,这就是依赖传递。简单来说就是你的依赖的依赖也会成为你的依赖。
<scope>标签的取值对依赖传递有什么影响呢?
这个影响就是,只有当依赖的scope标签被定义为compile时才会发生依赖传递,而定义为test或者provided都不会发生依赖传递。
理解maven项目的pom.xml文件中,<scope>标签的作用——作用域以及依赖传递的更多相关文章
- 如何在maven项目的pom.xml文件中添加jar包
在使用maven进行项目开发时,我们需要在pom.xml文件中添加自己所需要的jar包.这就要求我们获取jar包的groupId和artifactId. 我们可以在一些maven仓库上搜索我们所需要的 ...
- maven项目的pom.xml文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0 " 2 xmlns:xsi="http://www.w3.org ...
- maven spark Scala idea搭建maven项目的 pom.xml文件配置
1.pom.xml文件配置,直接上代码. <?xml version="1.0" encoding="UTF-8"?> <project xm ...
- springMVC+Mybatis的maven-web项目的pom.xml文件内容
pom.xml文件内容 <!-- 第一行是XML头,指定了该xml文档的版本和编码方式 --> <project xmlns="http://maven.apache.or ...
- maven(四):一个基本maven项目的pom.xml配置
继续之前创建的test项目,一个基本项目的pom.xml文件,通常至少有三个部分 第一部分,项目坐标,信息描述等 <modelVersion>4.0.0</modelVersion& ...
- Maven项目的pom.xml配置文件格式初识
Maven项目 有pom.xml文件的项目就已经是一个maven项目了,但是还没有被maven托管,我们需要将该项目添加为maven项目 <project xmlns="http:// ...
- 【Maven】在pom.xml文件中使用resources插件的小作用
在spring boot创建web项目打包为jar包的过程中,是不会把webapp目录下的页面也打包进去的,这个时候接触到了maven的 resources插件. ================== ...
- pom.xml文件中dependency标签的scope子标签
1.最近整合了公司的一个项目A,而A又依赖项目B,项目B中pom.xml中有一个依赖的<scope>provided</scope>,查了一下,原来provided属性,jar ...
- 关于Maven项目的pom.xml中的依赖或插件失效的解决方法
1.请将<dependency>标签包含的依赖从<dependencyManagement>中拿出来,单独放在<dependencies>标签里面.2.请将< ...
随机推荐
- Excel 2003-单元格输入中带记忆功能
最近有个同事问我,如何在Excel单元格输入中带记忆功能?其实很简单: 工具ó选项ó编辑ó将“记忆式键入”项选中ó确定: //附图[效果图]:
- QQ消息无限发送!源代码
昨天我一个朋友发给我一个特别有趣的程序 可以无限发送QQ消息,非常有趣! 发送给朋友之后只要打开,便可自动发送消息. 点打开后 便可一直发送消息 用Edit plus 打开后 其源代码如下 是用VB ...
- 使用Font Awesome替换你的网站图标(icons 图标)
http://www.thinkcmf.com/font/icons/ 第一次使用 Font Awesome 发现相当的爽呀!它的图标很全,能够帮你节约时间去找图片.下面就来一起学习吧: 1: 去官方 ...
- Excel Sheet Column Title (STRING - TYPE CONVERTION)
QUESTION Given a positive integer, return its corresponding column title as appear in an Excel sheet ...
- springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...
- Spring框架的IOC之注解方式的快速入门
1. 步骤一:导入注解开发所有需要的jar包 * 引入IOC容器必须的6个jar包 * 多引入一个:Spring框架的AOP的jar包,spring-aop的jar包 2. 步骤二:创建对应的包结构, ...
- SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...
- 将html转换成image图片png格式
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics ...
- c++ 中的符号与关键字
符号按照符号的ASC码数值从小到达排列,关键字按照英文字母排序. & [38] 位运算:取地址:左值引用[指针.引用都是可以做类型转换的] #include <iostream> ...
- 解决 Ubuntu 下 sudo 命令执行速度慢的问题
1.首先如果当用登录的用户名不在"/etc/sudoers"文件中,是不能执行sudo命令的.可以用root身份手动修该文件,把当前登录用户名加入该文件中. 2.用"ho ...