maven依赖范围 -maven scope -compile依赖范围 -test依赖范围 -provided范围依赖

目录

一、在pom.xml中dependencies节点引用我们所需要的依赖

二、scope节点指定依赖范围,常见的依赖范围有三种:compile(默认)、test、provided

从三个方面看这三种依赖范围的区别

maven项目的标准目录结构

三种依赖范围的区别

原因分析

三、Tips

四、其它maven相关博客


一、在pom.xml中dependencies节点引用我们所需要的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
   
    <groupId>xin.yangshuai</groupId>
    <artifactId>Hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <name>Hello</name>
    <description>Demo project for Hello</description>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

二、scope节点指定依赖范围,常见的依赖范围有三种:compile(默认)、test、provided

  1. 从三个方面看这三种依赖范围的区别

    1. 是否对主程序有效(main目录下的程序):主程序代码是否可以引用这个依赖
    2. 是否对测试程序有效(test目录下的程序):测试程序是否可以引用这个依赖
    3. 是否参与打包(部署):打包(package)后,这个依赖是否会被打到包内(lib文件夹内)
  2. maven项目的标准目录结构

    Hello
    |---src
    |---|---main
    |---|---|---java
    |---|---|---resources
    |---|---test
    |---|---|---java
    |---|---|---resources
    |---pom.xml

     

  3. 三种依赖范围的区别

    依赖范围(scope)是否对主程序有效是否对测试程序有效是否参与打包(部署)典型例子
    compile有效有效参与spring-core
    test无效有效不参与junit
    provided有效有效不参与servlet-api.jar
    1. 测试程序常规情况下是不参与打包的

  4. 原因分析

    1. compile依赖范围:默认的依赖范围,开发时需要,部署时也需要(运行时servlet容器不会提供),一般的就是这样。
    2. test依赖范围:主程序(main)是无法依赖test范围的jar的,开发时就不可以(那些jar主程序也是用不到的),只有测试程序可以依赖。要知道,测试程序常规是不会参与打包的,test范围的依赖也不参与打包,只是在开发阶段会用到,或者maven编译(compile)时会执行测试程序。
      1. 如果开发时主程序可以依赖test范围的jar,那么打包时由于test范围的jar不参与打包,所以打成的包运行时肯定就会报错。
    3. provided范围依赖:开发时,由于没有运行时环境,有些jar我们需要暂时依赖(不依赖有些方法就会找不到,用不了),但是项目打包部署运行时,由于运行时环境(servlet容器,比如:tomcat)会提供一些jar包,所以开发时那些暂时依赖的jar包就不能参与打包了,否则会发生冲突导致报错。

三、Tips

  1. 如有不对的地方还请告知,感激不尽

  2. 整体内容参考视频教程:http://www.gulixueyuan.com/my/course/42

四、其它maven相关博客

  1. maven依赖范围:https://blog.csdn.net/shuair/article/details/105350415
  2. maven依赖传递性:https://blog.csdn.net/shuair/article/details/105401296
  3. maven统一依赖版本号:https://blog.csdn.net/shuair/article/details/105404764
  4. maven聚合:https://blog.csdn.net/shuair/article/details/105416365

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值