问题介绍:

  在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>标签的作用——作用域以及依赖传递的更多相关文章

  1. 如何在maven项目的pom.xml文件中添加jar包

    在使用maven进行项目开发时,我们需要在pom.xml文件中添加自己所需要的jar包.这就要求我们获取jar包的groupId和artifactId. 我们可以在一些maven仓库上搜索我们所需要的 ...

  2. maven项目的pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0 " 2 xmlns:xsi="http://www.w3.org ...

  3. maven spark Scala idea搭建maven项目的 pom.xml文件配置

    1.pom.xml文件配置,直接上代码. <?xml version="1.0" encoding="UTF-8"?> <project xm ...

  4. springMVC+Mybatis的maven-web项目的pom.xml文件内容

    pom.xml文件内容 <!-- 第一行是XML头,指定了该xml文档的版本和编码方式 --> <project xmlns="http://maven.apache.or ...

  5. maven(四):一个基本maven项目的pom.xml配置

    继续之前创建的test项目,一个基本项目的pom.xml文件,通常至少有三个部分 第一部分,项目坐标,信息描述等 <modelVersion>4.0.0</modelVersion& ...

  6. Maven项目的pom.xml配置文件格式初识

    Maven项目 有pom.xml文件的项目就已经是一个maven项目了,但是还没有被maven托管,我们需要将该项目添加为maven项目 <project xmlns="http:// ...

  7. 【Maven】在pom.xml文件中使用resources插件的小作用

    在spring boot创建web项目打包为jar包的过程中,是不会把webapp目录下的页面也打包进去的,这个时候接触到了maven的 resources插件. ================== ...

  8. pom.xml文件中dependency标签的scope子标签

    1.最近整合了公司的一个项目A,而A又依赖项目B,项目B中pom.xml中有一个依赖的<scope>provided</scope>,查了一下,原来provided属性,jar ...

  9. 关于Maven项目的pom.xml中的依赖或插件失效的解决方法

    1.请将<dependency>标签包含的依赖从<dependencyManagement>中拿出来,单独放在<dependencies>标签里面.2.请将< ...

随机推荐

  1. Excel 2003-单元格输入中带记忆功能

    最近有个同事问我,如何在Excel单元格输入中带记忆功能?其实很简单: 工具ó选项ó编辑ó将“记忆式键入”项选中ó确定: //附图[效果图]:

  2. QQ消息无限发送!源代码

    昨天我一个朋友发给我一个特别有趣的程序 可以无限发送QQ消息,非常有趣! 发送给朋友之后只要打开,便可自动发送消息. 点打开后 便可一直发送消息 用Edit plus 打开后  其源代码如下 是用VB ...

  3. 使用Font Awesome替换你的网站图标(icons 图标)

    http://www.thinkcmf.com/font/icons/ 第一次使用 Font Awesome 发现相当的爽呀!它的图标很全,能够帮你节约时间去找图片.下面就来一起学习吧: 1: 去官方 ...

  4. Excel Sheet Column Title (STRING - TYPE CONVERTION)

    QUESTION Given a positive integer, return its corresponding column title as appear in an Excel sheet ...

  5. springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。

    springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...

  6. Spring框架的IOC之注解方式的快速入门

    1. 步骤一:导入注解开发所有需要的jar包 * 引入IOC容器必须的6个jar包 * 多引入一个:Spring框架的AOP的jar包,spring-aop的jar包 2. 步骤二:创建对应的包结构, ...

  7. SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...

  8. 将html转换成image图片png格式

    import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics ...

  9. c++ 中的符号与关键字

    符号按照符号的ASC码数值从小到达排列,关键字按照英文字母排序. & [38] 位运算:取地址:左值引用[指针.引用都是可以做类型转换的] #include <iostream> ...

  10. 解决 Ubuntu 下 sudo 命令执行速度慢的问题

    1.首先如果当用登录的用户名不在"/etc/sudoers"文件中,是不能执行sudo命令的.可以用root身份手动修该文件,把当前登录用户名加入该文件中. 2.用"ho ...