• 【Maven学习】3.7 实验七:测试依赖的传递性


    1、依赖的传递性

    ①概念

    A 依赖 B,B 依赖 C,那么在 A 没有配置对 C 的依赖的情况下,A 里面能不能直接使用 C?

    ②传递的原则

    在 A 依赖 B,B 依赖 C 的前提下,C 是否能够传递到 A,取决于 B 依赖 C 时使用的依赖范围。

    • B 依赖 C 时使用 compile 范围:可以传递
    • B 依赖 C 时使用 test 或 provided 范围:不能传递,所以需要这样的 jar 包时,就必须在需要的地方明确配置依赖才可以。

    2、使用 compile 范围依赖 spring-core

    测试方式:让 pro01-maven-java 工程依赖 spring-core

    具体操作:编辑 pro01-maven-java 工程根目录下 pom.xml

    
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-coreartifactId>
      <version>4.0.0.RELEASEversion>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用 mvn dependency:tree 命令查看效果:

    img

    TIP

    [INFO] com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT
    [INFO] ± junit:junit:jar:4.12:test
    [INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test
    [INFO] - org.springframework:spring-core:jar:4.0.0.RELEASE:compile
    [INFO] - commons-logging:commons-logging:jar:1.1.1:compile

    还可以在 Web 工程中,使用 mvn dependency:tree 命令查看效果(需要重新将 pro01-maven-java 安装到仓库):

    img

    TIP

    [INFO] com.atguigu.maven:pro02-maven-web:war:1.0-SNAPSHOT
    [INFO] ± junit:junit:jar:4.12:test
    [INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test
    [INFO] ± javax.servlet:javax.servlet-api:jar:3.1.0:provided
    [INFO] - com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile
    [INFO] - org.springframework:spring-core:jar:4.0.0.RELEASE:compile
    [INFO] - commons-logging:commons-logging:jar:1.1.1:compile

    3、验证 test 和 provided 范围不能传递

    从上面的例子已经能够看到,pro01-maven-java 依赖了 junit,但是在 pro02-maven-web 工程中查看依赖树的时候并没有看到 junit。

    要验证 provided 范围不能传递,可以在 pro01-maven-java 工程中加入 servlet-api 的依赖。

    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>javax.servlet-apiartifactId>
      <version>3.1.0version>
      <scope>providedscope>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    效果还是和之前一样:

    TIP

    [INFO] com.atguigu.maven:pro02-maven-web:war:1.0-SNAPSHOT
    [INFO] ± junit:junit:jar:4.12:test
    [INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test
    [INFO] ± javax.servlet:javax.servlet-api:jar:3.1.0:provided
    [INFO] - com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile
    [INFO] - org.springframework:spring-core:jar:4.0.0.RELEASE:compile
    [INFO] - commons-logging:commons-logging:jar:1.1.1:compile

  • 相关阅读:
    【Unity性能优化】静态资源优化——Audio优化
    SparkSql中的窗口函数
    Jmeter响应时间和tps监听器使用教程
    第二届 Oceanbase 开发者大会 实录
    一、用户数据仓库
    论坛回顾|用社区和开发者工具驱动软件供应链安全治理——章华鹏
    Dynamsoft Barcode Reader C, C++, .NET, Java SDK
    【APUE】文件系统 — 目录和文件
    成功解决“ModuleNotFoundError: No module named ‘tensorflow_datasets‘”错误的全面指南
    Res2Net: 一种新的多尺度主干体系结构(Res2Net: A New Multi-scale Backbone Architecture )
  • 原文地址:https://blog.csdn.net/weixin_44589991/article/details/126127593