Maven的依赖

一、依赖的基本配置

根元素project下的dependencies可以包含多个 dependence元素,以声明多个依赖。每个依赖都应

该包含以下元素:

1. groupId, artifactId, version :

依赖的基本坐标, 对于任何个依赖来说,基本坐标是最重要的,

Maven根据坐标才能找到需要的依赖。

2. Type

依赖的类型,部分情况下不需要声明。 默认值为jar

3. Scope: 依赖范围(compile,test,provided,runtime,system
  • compile: 编译依赖范围。

如果没有指定,就会默认使该依赖范围。使此依赖范围的Maven依赖,对于编译、测

试、运三种classpath都有效。

  • test: 测试依赖范围。

使此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运的使

时将法使此类依赖。典型的例就是JUnit,它只有在编译测试代码及运测试的时候

才需要。

  • provided: 已提供依赖范围。

使此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运效。典型的例

servlet-api,编译和测试项的时候需要该依赖,但在运的时候,由于容器已经

提供,就不需要Maven重复地引⼊⼀(如:servlet-api)

  • runtime: 时依赖范围。

使此依赖范围的Maven依赖,对于测试和运⾏classpath有效,但在编译主代码时效。典

型的例JDBC驱动实现,项主代码的编译只需要JDK提供的JDBC,只有在执测试

或者运的时候才需要实现上述接的具体JDBC驱动。

  • system: 系统依赖范围。

该依赖与三种classpath的关系,和provided依赖范围完全致。但是,使⽤system范围依

赖时必须通过systemPath元素显式地指定依赖件的路径。由于此类依赖不是通过Maven

库解析的,且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使

4. Optional:

标记依赖是否可选

5. Exclusions

来排除传递性依赖。

二、 依赖范围

先需要知道,Maven在编译项主代码的时候需要使⽤⼀classpath

如:编译项代码的时 候需要⽤spring-core,件以依赖的式被引classpath中。 其次, Maven在执测试的时候 会使⽤另外classpath。 如:junit。 最后在实际运⾏时,会使⽤⼀classpath, spring-core需要在该classpath中,⽽junit不需要。

那么依赖范围就是来控制依赖与这三种classpath(编译classpath,测试classpath,运

classpath)的关系, Maven有以下种依赖范围:

1. Compile 编译依赖范围:

如果没有指定,就会默认使该依赖范围。 使此依赖范围的Maven

赖, 对于编译,测试,运都有效。

2. Test

测试依赖范围。 只在测试的时候需要。junit

3. Provided

已提供依赖范围。 使此依赖范围的Maven依赖,对于编译和测试有效, 但在运

效。 典型的例servlet-API, 编译和测试项的需要, 但在运时, 由于容器已经提

供, 就不需要Maven重复地引⼊⼀遍。

4. Runtime

时依赖范围。 使此依赖范围的Maven依赖,对于测试和运⾏有效, 但在编译代

码时效。 典型的例是:jdbc驱动程序, 项主代码的编译只需要jdk提供的jdbc,只有在

测试或者运的时候才需要实现上述接的具体jdbc驱动。

5. System

系统依赖范围。 般不使

三、传递性依赖

让我们在使某个jar的时候就不去考虑它依赖了什么。也不多余的依赖。

Maven会解析各个直接依赖的POM,将那些必要的间接依赖,以传递性依赖的形式引到当前项

中。

注意: 传递依赖有可能产冲突!!

冲突场景:

如果A下同时存在两个不同versionC,冲突!!(选取同时适合AB的版本)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端聊天室页面开发(赛博朋克科技风,内含源码)

肝了一天,经过各种处理美化,肝出来了一个赛博朋克科技风的前端页面,用的原生三件套htmlcssjavascript开发的,本来想是加点功能调用一下gpt接口,但是基本都需要webscoket通信,可惜我js学的不是很深入&#x…

使用Vue.js构建响应式Web应用

💖 博客主页:瑕疵的CSDN主页 💻 Gitee主页:瑕疵的gitee主页 🚀 文章专栏:《热点资讯》 使用Vue.js构建响应式Web应用 1 引言 2 Vue.js简介 3 安装Vue CLI 4 创建Vue项目 5 设计应用结构 6 创建组件 7 使用…

C++——string的模拟实现(下)

目录 成员函数 3.4 修改操作 (3)insert()函数 (4)pop_back()函数 (5)erase()函数 (6)swap()函数 3.5 查找操作 (1)find()函数 (2)substr()函数 3.6 重载函数 (1)operator赋值函数 (2)其他比较函数 (3)流插入和流提取 完整代码 结束语 第一篇链接:C——…

基于Springboot无人驾驶车辆路径规划系统(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【大模型】Ollama+WebUI+AnythingLLM搭建本地知识库

目录 1 部署Ollama 1.1 下载镜像ollama 1.2 运行ollama 1.3 验证 2 模型选型 3 安装模型 3.1 选择模型安装 3.2 删除模型(选看) 4 安装webUI 4.1 拉镜像 4.2 启动服务 5 访问 5.1 注册 5.2 登录 5.3 设置 6 使用 7 使用api来调用 8 安装AnythingLLM搭建本地…

27.9 调用go-ansible执行playbook拷贝json文件重载采集器

本节重点介绍 : go-ansible执行playbook编写分发重载的playbook编译执行 测试停掉一个节点测试停掉的节点再回来 go-ansible执行playbook 新增 goansiblerun/run.go package goansiblerunimport ("context""github.com/apenella/go-ansible/pkg/execute&qu…

Python基础学习(四)程序控制结构

代码获取:https://github.com/qingxuly/hsp_python_course 完结版:Python基础学习完结版 程序控制结构 程序流程控制介绍 基本介绍 程序流程控制绝对程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。顺序控制、分支…

Linux中DHCP服务器配置和管理

文章目录 一、DHCP服务1.1、DHCP的工作流程1.2、DHCP的工作模式1.3、dhcp的主要配置文件 二、安装DHCP服务2.1、更新yum源2.2、安装DHCP服务软件包2.3、配置DHCP服务2.4、启用DHCP服务(解决报错)2.4.1、查看dhcpd服务的状态和最近的日志条目2.4.2、查看与…

js构造函数和原型对象,ES6中的class,四种继承方式

一、构造函数 1.构造函数是一种特殊的函数,主要用来初始化对象 2.使用场景 常见的{...}语法允许创建一个对象。可以通过构造函数来快速创建多个类似的对象。 const Peppa {name: 佩奇,age: 6,sex: 女}const George {name: 乔治,age: 3,sex: 男}const Mum {nam…

【react 和 vue】 ---- 实现组件的递归渲染

1. 需求场景 今天遇到了一个需求,就是 HTML 的递归渲染。问题就是商品的可用时间,使用规则等数据是后端配置,然后配置规则则是可以无限递归的往下配置,可以存在很多级。后端实现后,数据返回前端,就需要前端…

【mysql 进阶】2-1. MySQL 服务器介绍

MySQL 服务器简介 通常所说的 MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务,这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容,包括: 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选…

前后端请求、返回数据的多种方式

Springboot项目的业务逻辑 🌙项目基本结构: 通常情况下,我们在搭建后端项目的时候,处理业务逻辑我们需要用到Controller,Service,Mapper(mybatis,mybatis-plus),Entry各层之间的相互调用来完成,还有就是我…

数据库->增删改查

目录 一、CRUD简介 二、Create新增 1.单行数据插入 2.查询 3. 多行数据插入 4.执行本机的SQL脚本插入 三、Retrieve检索 1.全列查询 2.指定列查询 3.查询字段为表达式 3.1 常量表达式 3.2列的值与常量运算 3.3列与列之间的运算 3.4为列指定别名 4.结果查询去重…

高等数学-宋浩版2.0-映射

映射:X,Y为非空集合,存在法则F,对X(原像)中每个元素X,按法则F,在Y中有唯一元素与之对应,F为x到Y(镜像)的映射。f:X->Y X原像,Y像,x定义域,Df,Rf &#x…

php后端学习,Java转php

遇到前后端跨域 php解决跨域问题可以加上下面的代码: header(“Access-Control-Allow-Origin:*”); 并且查看自己的数据库信息是否连接成功。 从Java转php 个人感受php跟偏向前端, 写后端逻辑时没有像java又springboot工具方便。 但是和前端联调很方便…

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破(burpsuite) 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…

Python基于TensorFlow实现简单循环神经网络回归模型(SimpleRNN回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 Simple RNN是一种基础的循环神经网络,它能够处理序列数据,例如文本、时间序…

React写关键字高亮的三个方案

1.js正则replaceAlldangerouslySetInnerHTML{{ __html: xxx }}危险属性 步骤最简单,但是是危险属性,不推荐使用,项目中实在没有头绪,可以使用它应急 通过useMemo计算得到新的状态值,赋值给dangerouslySetInnerHTML属性的__html 关键代码: const [state1, setState1] useSt…

【网络原理】网络地址转换----NAT技术详解

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…

java核心技术点都有哪些

1. 面向对象编程(OOP) 核心概念:类、对象、继承、封装、多态。 比喻:面向对象编程就像是在搭建一个积木城堡。类(Class)是城堡的设计图纸,它定义了城堡的结构和功能;对象&#xff08…