Maven基本使用
1. Maven前瞻
Maven官网:https://maven.apache.org/
Maven镜像:https://mvnrepository.com

1.1、Maven是什么
Maven是一个功能强大的项目管理和构建工具,可以帮助开发人员简化Java项目的构建过程。
在Maven中,使用一个名为 pom.xml的核心配置文件来管理项目的依赖关系、编译设置、打包和部署等操作。
1.2、Maven的作用
- 管理依赖(管理jar包)
- 提供统一项目结构规范
- 项目构建:使用一条命令就能实现一键构建(如 编译、测试、打包、发布等)
1.3、Maven的仓库类型
- 本地仓库:本机电脑上缓存jar包的文件夹。默认是在
C:\Users\用户名\.m2\repository - 私服:由一些公司、组织搭建的仓库服务,通常是内部使用的
- 中央仓库:由Maven官方维护的仓库,有世界上最全的开源jar包
1.4、Maven加载jar包的顺序
-
Maven优先会从本地仓库加载jar包
-
如果本地仓库没有的话:
-
如果有私服,就从私服下载jar包到本地仓库,然后再从本地仓库里引用
-
如果没有私服,就从中央仓库下载jar包到本地仓库,然后再从本地仓库里引用
-

1.5、Maven安装
1、下载maven安装包,解压到一个不含中文、空格、特殊字符的路径下。
2、配置环境变量 MAVEN_HOME、Path,然后cmd里执行 mvn -v 验证是否安装成功。
3、修改conf\settings.xml ,配置本地仓库路径:
<localRepository>本地仓库路径</localRepository>
4、修改conf\settings.xml,配置阿里云镜像仓库:
<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
1.6、IDEA集成Maven
1、配置Maven

2、增加运行的参数: -DarchetypeCatalog=local,让Maven从本地仓库加载骨架信息;选择使用JDK11

1.7、Maven的依赖范围
compile:默认的依赖范围,全范围有效。test:单元测试有效。src/test里有效,src/main里无效。打包时会忽略provided:编译时有效,运行时使用其它地方提供的jar包。备胎。打包时会忽略runtime:运行时有效,编译时无效。比如:数据库驱动包system:引入仓库之外的本地jar包。少用
实际开发中特殊的jar包:
Junit:依赖范围通常设置为testservlet-api, jsp-api:依赖范围通常设置为provided数据库驱动包:依赖范围可以是默认的,也可以是runtime- 其它包,绝对多数都是默认依赖范围
1.8、项目构建的生命周期
Maven的三套生命周期:
-
清理生命周期:CleanLifeCycle
常用命令有:
clean -
默认生命周期(构建生命周期):DefaultLifeCycle
常用命令有:
compile->test->package->install->deploy -
站点生命周期:SiteLifeCycle
常用命令有:
site。生成Maven项目的描述信息文档
生命周期的作用:如果执行了一个目标命令:Maven会把生命周期里的命令,从第一个一直执行到目标命令为止。
clean:清理。执行后会删除项目的target文件夹【掌握】
compile:编译。编译项目源码,把编译的结果放到target目录里【掌握】
test:单元测试。注意:单元测试类必须放到src\test\java里,类名要求以Test结尾
package:打包。常见打包方式有:
jar:默认就是jar包
war:以前开发的时候,web项目要打成war包。
设置打包方式:在pom.xml里添加
<packaging>打包方式</packaging>
1.9、引入依赖坐标
1、maven依赖标准结构,坤坤三件套:GAV
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version>
</dependency>
- groupId:公司域名反写
- artifactId:项目名称
- version:项目的版本号(SNAPSHOP快照版本,RELEASE稳定版本 )
2、如果引入的依赖在父工程中被锁定了,则不需要加版本号:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--<version>2.7.10</version>-->
</dependency>
2. 依赖冲突
Maven中添加的依赖是具有传递性的,如果项目中间接引入多个同名的依赖就会产生冲突,那么如何解决呢?
2.1、如何查看依赖冲突
方式1:以命令行方式查看依赖树(不建议用,依赖多的时候,不好查找)
mvn -Dverbose dependency:tree
方式2:使用 Maven Helper 插件查看
使用教程:https://blog.csdn.net/u011066470/article/details/135943032

2.2、解决依赖冲突
-
路径最短优先原则:主要根据依赖的路径长短来决定引入哪个依赖
-
最先声明优先原则:如果两个依赖的路径一样,声明在前的则优先选择。
-
排除依赖:使用exclusion标签排除依赖
-
封装成rpc服务
-

相关文章:
Maven基本使用
1. Maven前瞻 Maven官网:https://maven.apache.org/ Maven镜像:https://mvnrepository.com 1.1、Maven是什么 Maven是一个功能强大的项目管理和构建工具,可以帮助开发人员简化Java项目的构建过程。 在Maven中,使用一个名为 pom.…...
在Linux系统中配置GitHub的SSH公钥
在Linux系统中配置GitHub的SSH公钥,可以让您无需频繁输入密码即可与GitHub仓库进行交互,提高工作效率。以下是配置步骤: 第一步: 检查SSH密钥是否存在 首先,检查您的用户目录下的.ssh文件夹中是否已有SSH密钥。打开终端࿰…...
小酌消烦暑|人间正清欢
小暑是二十四节气之第十一个节气。暑,是炎热的意思,小暑为小热,还不十分热。小暑虽不是一年中最炎热的时节,但紧接着就是一年中最热的节气大暑,民间有"小暑大暑,上蒸下煮"之说。中国多地自小暑起…...
C语言结构体的相关知识
前言 从0开始记录我的学习历程,我会尽我所能,写出最最大白话的文章,希望能够帮到你,谢谢。 1.结构体类型的概念及定义 1.1、概念: 结构体是一种构造类型的数据结构, 是一种或多种基本类型或构造类型的数…...
RabbitMQ入门教程(精细版二带图)
目录 六 RabbitMQ工作模式 6.1Hello World简单模式 6.1.1 什么是简单模式 6.1.2 RabbitMQ管理界面操作 6.1.3 生产者代码 6.1.4 消费者代码 6.2 Work queues工作队列模式 6.2.1 什么是工作队列模式 6.2.2 RabbitMQ管理界面操作 6.2.3 生产者代码 6.2.4 消费者代码 …...
IO、零拷贝、多路复用、connection、池化
目录 一、IO 模型 二、什么是网络IO 三、什么是零拷贝 四、多路复用 五、java程序、mysql JDBC connection关系 六、connection怎么操作事务 七 、java里面的池化技术 八、线程池7个核心参数 九、线程的状态 一、IO 模型 BIO :同步阻塞io,单线程 内存上下…...
Lua 错误处理
Lua 错误处理 Lua是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序中。在编程过程中,错误处理是一个重要的方面,它可以帮助开发者创建更健壮和可靠的程序。本文将详细介绍Lua中的错误处理机制。 错误类型 在Lua中&#x…...
二刷力扣——单调栈
739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…...
elementPlus-vue3-ts表格单选和双选实现方式
记录在vue3、ts、element-plus环境下表格单选和多选的实现方式 单选 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…...
Linux系统中卸载GitLab
在Linux系统中卸载GitLab,主要可以通过包管理器(如apt、yum、rpm等)来实现,但具体步骤可能会因GitLab的安装方式(如使用包管理器安装、从源代码安装、使用Docker等)和Linux发行版的不同而有所差异。以下是一…...
基于STM32F407ZG的FreeRTOS移植
1.从FreeRTOS官网中下载源码 2、简单分析FreeRTOS源码目录结构 2.1、简单分析FreeRTOS源码根目录 (1)Demo:是官方为一些单片机移植FreeRTOS的例程 (2)License:许可信息 (3)Sourc…...
【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别
文章目录 引言什么是操作符?基本数据类型的比较示例: 引用类型的比较示例: 什么是equals方法?equals方法的默认实现示例: 重写equals方法示例: equals与的区别比较内容不同示例: 使用场景不同示…...
WEBHTTP
目录 理解HTTP协议请求流程 1 1 Web基础 2 Hosts文件 1 1 2网页与HTML 2 HTML概述 1 1 3静态网页与动态网页 1.2HTTP协议 1 2 1 HTTP协议概述 1 2 2 HTTP方法 HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…...
nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题
一、问题描述 在做登录日志的时候想要获取客户端的ip, 网上查了一下 通过 req.headers[x-forwarded-for] || req.connection.remoteAddress; 获取, 结果获取了之后不管是开发环境,还是生产环境获取到的一直都是 127.0.0.1,这是因为在配置N…...
微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注
近日,欧盟委员会主管竞争事务的副主席玛格丽特维斯塔格(Margrethe Vestager)在一次演讲中透露,欧盟反垄断监管机构将就微软与OpenAI的合作,以及谷歌与三星达成的AI协议寻求更多第三方意见。这意味着微软与 OpenAI、谷歌与三星的 AI 交易及合作…...
微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...
spring boot 接口参数解密和返回值加密
spring boot 接口参数解密和返回值加密 开发背景简介安装配置yml 方式Bean 方式 试一下启动项目返回值加密参数解密body 参数解密param和form-data参数解密 总结 开发背景 虽然使用 HTTPS 已经可以基本保证传输数据的安全性,但是很多国企、医疗、股票项目等仍然要求…...
C语言自定义类型——联合体、枚举
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、联合体(一)、联合体的声明(二)、联合体的特点(三)、联合体大小的计算!&a…...
【trition-server】pytorch 文档:使用 Triton 提供 Torch-TensorRT 模型
Serving a Torch-TensorRT model with Triton pytorch 的官方文档: Serving a Torch-TensorRT model with Triton 在有关机器学习基础设施的讨论中,优化和部署是密不可分的。一旦完成网络级优化以获得最大性能,下一步就是部署它。 然而,提供这种优化模型也有其自身的一系列…...
wps 表格如何实现vlookup高级模糊搜索
一、VLOOKUP 模糊搜索 在 WPS 表格中,可以通过使用 VLOOKUP 函数和通配符来实现高级模糊搜索。这里有一个具体的示例来帮助你理解如何进行这些操作。 示例:实现 VLOOKUP 高级模糊搜索 假设我们有以下数据集: AB产品编号产品名称001苹果00…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
