• 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不是。

  • 相关阅读:
    C语言I博客作业08
    C语言I博客作业07
    第十周助教总结
    关于Dev-c++运行时与Windows不兼容问题
    C语言I博客作业06
    第九周助教总结
    C语言I作业07
    C语言I博客作业06
    C语言I作业05

  • 原文地址:https://www.cnblogs.com/diffx/p/11289961.html
Copyright © 2020-2023  润新知