zoukankan      html  css  js  c++  java
  • scope:provided影响子依赖

    一、问题

    在上一篇《SpringBoot项目启动不走内嵌容器》中发现,provided会影响子依赖。

    标记为scope:provided的jar在编译和运行时有作用,表明了运行时dependency 由JDK或者容器提供

    那么问题来了:有个项目,依赖了jar包A,然后A又依赖B,B又依赖C,C又依赖D,现在给A加了scope:provided,那么运行时的BCD也是由JDK或者容器提供吗?

    二、实验分析

    新建个测试项目

    spring-boot-starter-web做实验

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            ......
    </dependencies>
    

    我们点进去看spring-boot-starter-web的依赖关系,如下图

    我们可以发现,spring-boot-starter-web依赖于spring-boot-starterspring-boot-starter又依赖于spring-bootspring-boot又依赖于tomcat-embed-core

    2.1 实验一:不加provided启动

    我们现在启动项目,项目正常,走的是springboot内嵌的tomcat

    2.2 实验二:加上provided启动

    我们现在加上scope:provided,

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <scope>provided</scope>
            </dependency>
            ......
    </dependencies>
    

    再启动项目,发现走的还是springboot内嵌的tomcat

    2.3 实验三:给子依赖加上provided启动

    我们现在去掉org.springframework.boot的provided,转而给他的子依赖spring-boot-starter加上provided试试

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            ......
         </dependencies>
    

    启动起来,发现没走springboot的内嵌容器,而是走的JDK配置tomcat容器

    三、结论

    maven的scope:provided会影响它的两级子依赖。

    我们现在回答章节一的问题

    问题:有个项目,依赖了jar包A,然后A又依赖B,B又依赖C,C又依赖D,现在给A加了scope:provided,那么运行时的BCD也是由JDK或者容器提供吗?

    答案:BC由容器提供,D不是。

  • 相关阅读:
    div地图中display设置为none引起的报错
    onclick事件传参
    获取,设置任意标签的任意属性值
    ajax局域变量赋值给全局变量
    eclipse整合maven打包的时候跳过测试
    测网络ip,端口互通命令
    关于局域网地址ping不通的问题
    Error starting static Resources java.lang.IllegalArgumentException: Document base F:Soft omcatwebappspms-site does not exist or is not a readable directory
    回顾创建项目报错
    记录一次webpackJsonp is not defined
  • 原文地址:https://www.cnblogs.com/diffx/p/11289961.html
Copyright © 2011-2022 走看看