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
:依赖范围通常设置为test
servlet-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…...

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅
常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件…...

【C++题解】1561. 买木头
问题:1561. 买木头 类型:省赛、数组问题、二分答案、贪心、2015江苏省青少年信息学奥林匹克竞赛复赛 题目描述: 有 n 个木材供应商,每个供货商有长度相同一定数量的木头。长木头可以锯短,但短木头不能接长。有一个客…...

解决android native包webview,webview中的请求blocked by CORS policy
在stack overflow查,差不多查到的都是些webView.getSettings().setxxx,没用。在github上找别的类似的android native包webview运行pwa的项目,把它们的webView.getSettings().setxxx全搬过来,写了有一页多,一个有用的都…...

链篦机回转窑球团生产工艺
生球在回转窑氧化焙烧,回转窑头部设有燃烧器,燃料可以采用气体、固体、液体。 来自环冷机一冷却段的高温废气作为二次风进入窑内参与燃烧,烧成成品球进入环冷机。 环冷机采用鼓风冷却,热风风箱分为四段: 一段气体引至…...

查看电脑ip地址快捷键是什么?是哪个
在网络世界中,IP地址是每个网络设备的唯一标识,无论是我们的电脑、手机还是其他联网设备,都需要一个独特的IP地址来进行通讯。在日常生活和工作中,我们有时需要查看电脑的IP地址,以便进行网络设置、故障排查或远程连接…...

面试专区|【54道Spring Cloud高频题整理(附答案背诵版)】
什么是Spring Cloud? Spring Cloud是一个基于Spring Boot的开源框架,它提供了在分布式系统中集成各种服务治理功能的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态等。其主要目…...

Shopee(虾皮)怎么获取流量?
店铺流量的高低会直接关联到卖家店铺单量,也关系到一个店铺的营业情况和利润,那么Shopee的流量从哪里来呢? Shopee的平台流量可分为五个部分: 1.自然流量 2.关键字广告流量 3.平台活动流量 4.营销流量 5.粉丝流量 怎么提升…...

Java启动虚拟机默认字符集编码
-Dfile.encodingUTF-8 java程序启动默认字符集编码参数 // 这里会创建一个Charset.defaultCharset().name()的流,在Windows命令行窗口启动,会出现字符编码为GBK的情况 // 导致乱码输入、输出都会有影响 // 解决办法流的读取指定编码new InputStreamRead…...

【单片机编程模式】状态机编程
状态机编程是一种编程模式,它基于有限状态机(Finite State Machine,简称FSM)的概念。以下是状态机编程的清晰解释,分点表示和归纳: 基本概念: 状态机是一个有向图形,由一组节点&…...

IPSS模块怎么安装到VOS服务器的,到底有没有效果,是不是能大幅度提升VOS3000安全性呢
由于VOS的普及性,不得不承认VOS确实是非常优秀的软交换,但是很多客户在使用过程中都会遇到各种安全问题,比如话费被盗用了,历史话单一堆的非法呼叫话单,严重的影响到了话务安全,并不是那点话费的事了&#…...