首页 > 其他分享 >Maven6 - 依赖传递

Maven6 - 依赖传递

时间:2023-02-04 11:34:49浏览次数:32  
标签:INFO maven 依赖 core jar Maven6 传递 compile

测试依赖的传递性

依赖的传递性

概念

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

传递的原则

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

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

使用 compile 范围依赖 spring-core

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

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

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-core</artifactId>
	<version>4.0.0.RELEASE</version>
</dependency>

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

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 安装到仓库):

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

验证 test 和 provided 范围不能传递

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

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

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
	<scope>provided</scope>
</dependency>

效果还是和之前一样:

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

标签:INFO,maven,依赖,core,jar,Maven6,传递,compile
From: https://www.cnblogs.com/Ashen-/p/17091159.html

相关文章

  • Maven5 - 依赖范围
    测试依赖的范围依赖范围标签的位置:dependencies/dependency/scope标签的可选值:compile/test/provided/system/runtime/importcompile和test对比main目录(空间)t......
  • Spring6 DI 依赖注入--Bean属性赋值
    Spring6基于XML实现Bean管理(属性赋值)IOC和DI有什么区别:DI是IOC中的具体实现,DI表示依赖注入或注入属性,注入属性要在创建对象的基础之上完成依赖注入方法bean属性赋值方......
  • Vue项目中使用中央事件总成进行参数传递
    Vue项目中使用中央事件总成进行参数传递 作用场景:当不使用VueX的情况下,且组件之间不存在父子关系,就可以使用到中央事件总成进行参数传递 步骤一:先是需要在工......
  • golang context上下文值传递与控制
    1.Context详解在Go语言中context包允许传递一个“context”到程序中。Context如超时或截止日期(deadline)或通道,来指示停止运行和返回。例如,如果正在执行一个web......
  • vue.js客服系统实时聊天项目开发(十八)仿淘宝商品页面点在线客服传递产品卡片
    我们在使用淘宝的时候,在商品页面点击在线客服,跳转到客服聊天页以后,会浮动出当前产品信息,可以把产品信息发给客服现在我们也实现了类似功能,可以带着产品信息进聊天页面 ......
  • 利用引用传递一次遍历构造菜单树(附java&go demo)
    目录原理讲解javademoGodemo优点原理讲解利用引用传递,当儿子的儿子变动的时候,自己的儿子的儿子也变动(取地址)javademopackagecom.huiyuan.algorithm;importjava.......
  • 无需依赖Docker环境制作镜像
    随着高版本的Kubernetes弃用Docker,企业也可以不依赖Docker环境了,但是DevOps通过Kubernetes部署的话,仍然需要制作镜像,那么在没有Docker环境的情况下如何制作呢?推荐一款谷歌......
  • 青龙面板安装依赖
    安装方法如图nodejs依赖crypto-jsprettytabledotenvjsdomdate-fnstough-cookietslibws@7.4.3ts-md5jsdom-gjiebafsform-datajson5global-agentpng-js@types/noderequir......
  • 关于服务发现、Feign、Zuul 以及docker之间的依赖
    Consul和Eureka都是用来解决服务发现(就是类似DNS服务)。Eureka在应用主类中通过加上​​@EnableDiscoveryClient​​,该注解能激活Eureka中的DiscoveryClient。(微服务中......
  • 有依赖的背包问题
    题目连接:https://www.acwing.com/problem/content/10/简单来说就是在子节点和父节点有制约条件下选择物品来取得最大值  其实可以这样想:将子树按照体积划分为0~m份,......