Spring框架基本使用(Maven详解)

news2025/2/25 0:00:33

前言:

        当我们创建项目的时候,第一步少不了搭建环境的相关准备工作。

        那么如果想让我们的项目做起来方便快捷,应该引入更多的管理工具,帮我们管理。

        Maven的出现帮我们大大解决了管理的难题!!

Maven:

        Maven是什么?

        官⽅对于Maven的描述:

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

翻译过来就是:
         Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。

Maven提供的功能: 

        1.项目构建       

        2.管理依赖

项目构建:

        Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的⾃动化项⽬构建⽅式 当我们开发了⼀个项⽬之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进⾏, 就显得特别⿇烦,, ⽽Maven 给我们提供了⼀套简单的命令来完成项⽬的构建.

        

例如:

        可以通过package命令将所有.class文件打成jar包。

ar包是⼀种压缩⽂件
jar包就是把开发⼈员已经写好的⼀些代码进⾏打包. 打好的jar包就可以引⼊到其他项⽬中, 也可以直接使⽤这些jar包中的类和属性. 另外也可以打成可执⾏jar包, 这样的包就可以通过java -jar命令来执⾏。

依赖管理:

        上⾯说到, Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包获取的jar包, 其实就是依赖.

pom.xml 就是maven 的配置⽂件,⽤以描述项⽬的各种信息

         依赖是什么?

        指当前项目运行时所需要的jar包。

        例如:

        此时该项目中需要用到数据库MySql,那么如何将数据的资源和该项目结合,此时就可以添加数据库的相关依赖,方便我们在项目中直接调用数据库等与数据库相关的操作。

如果使⽤Maven, 我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了:
格式如下:
< dependencies >
<!-- ⾥⾯放置项⽬的依赖坐标 , 可为多个 -->
</ dependencies >
在pom文件的<dependencis>标签内添加依赖坐标:
< dependency >
< groupId >mysql</ groupId >
< artifactId >mysql-connector-java</ artifactId >
< version >8.0.30</ version >
</ dependency >
之后刷新Maven:

依赖传递:

        还是回到最初的话题,我们为什么在创建项目的时候使用Maven,是因为Maven带给我们一些便利,如果我们手动的去添加管理依赖会出现一些难以避免的问题:

        1.添加的依赖的版本对该项目是否能使用。

        2.如果一个依赖中又依赖另外的依赖,那么此时对依赖的关联性考虑不全面。

        3.如果两个或多个依赖同时又依赖同一个依赖,此时被依赖的对象的版本不一定同时适用于两个或多个依赖,此时就会造成依赖冲突

但是如果此时引入Maven,它可以帮我们解决上述的几个问题:

        如上图, 项⽬A 通过Maven 引⼊Jar A 时, 会⾃动引⼊ Jar B 和Jar C.Jar A 和项⽬B就是项⽬A的直接依赖.Jar B, Jar C是间接依赖.

依赖排除:

        当我们项目变得越来越复杂时,此时如果项⽬A不需要Jar B,也可以通过排除依赖的⽅式来实现。        

排除依赖:
指主动断开依赖的资源。(被排除的资源⽆需指定版本) 

Maven Help插件:

        当项⽬⽐较复杂时, 我们就会有Jar包冲突的问题, 这时候就需要去解决依赖冲突. 解决冲突之前, 需要先找到冲突, 我们可以使⽤Maven Help插件来观察包和包之间的依赖关系。

        (插件就是对程序的⼀些特定场景, 做出⼀些特定的功能的扩展

安装插件: File -> Settings ->Plugins -> 搜索'Maven Help' -> 找到对应插件, 点击Install 安装即可, 安装后需要重启下idea, 才能⽣效。

安装之后, 打开pom⽂件, 可以看到Jar包之间的依赖关系:

Maven仓库:

        为什么通过几行代码,xml格式的代码就可以将整个jar包引入呢?

         

这个代码, 我们称之为 "坐标", 也就是唯⼀的.
在Maven中, 根据 groupId、artifactId、version 的配置, 来唯⼀识别⼀个 jar 包, 缺⼀不可.当我们在pom⽂件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库⾥寻找Jar包, 并把他下载下来, 添加到项⽬中. 这个Jar包下载的地⽅就称为仓库.
(仓库:⽤于存储资源,管理各种jar包)

       

Maven仓库分为两⼤类: 本地仓库 远程仓库 .
其中远程仓库⼜分为 中央仓库, 私服 和其他公共库

本地仓库:

        本地仓库: ⾃⼰计算机上的⼀个⽬录(⽤来存储jar包) 当项⽬中引⼊对应依赖jar包后,⾸先会查找本地仓库中是否有对应的jar包如果有,则在项⽬直接引⽤,如果没有,则去中央仓库中下载对应的jar包到本地仓库。

本地仓库地址可以通过Maven配置查看:
File -> Settings
查看该仓库⽬录, 可以看到该⽬录下有很多的jar(最开始是空的, 随着Maven的使⽤, 该仓库下⽂件会越来越多)。

中央仓库:

        中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联⽹. 由 Maven 团队维护,全球唯⼀.

仓库地址: https://repo1.maven.org/maven2/
可以通过 https://mvnrepository.com 这个⽹站来查询并下载
我们可以把⾃⼰写好的Jar包上传到中央仓库(具备⼀定的要求), 也可以从中央仓库下载Jar包
查找Jar的坐标
1. 访问 https://mvnrepository.com/
2. 进⾏查找, ⽐如mysql

 选择添加jar包版本:

查看jar包坐标:

将坐标添加到pom.xml文件中:

私有服务器:
         

私服: ⼀般由公司团队搭建的私有仓库.

私服属于某个公司,或者某个部⻔, 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序⼜发⽣了变化

Maven设置国内源:

        由于中央仓库在国外部署,下载起来会比较慢,所以咱们选择借助国内⼀些公开的远程仓库来下载资源接下来介绍如何设置国内源:

        

setting.xml文件放下面了,需要的自取:

通过网盘分享的文件:settings.xml
链接: https://pan.baidu.com/s/1VLZrlVgShTSwQQVMVcNyzg?pwd=8888 提取码: 8888       

Maven 仓库默认在国外 https://mvnrepository.com/ , 国内使⽤时会⽐较慢,我们可以更换为阿⾥云的仓库
也可以选择别的仓库, 参考: Maven 镜像地址⼤全
打开settings.xml, 在 mirrors 节点上,添加内容如下:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name> 阿⾥云公共仓库 </name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
以上分享的setting文件已经添加过了,可以直接使用!!

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙NEXT应用App测试-专项测试(DevEco Testing)

注意&#xff1a;大家记得先学通用测试在学专项测试 鸿蒙NEXT应用App测试-通用测试-CSDN博客 注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注…

Rocky8 源码安装 HAProxy

HAProxy 是一款开源的高性能 负载均衡器 和 反向代理 软件&#xff0c;专注于处理高并发流量分发&#xff0c;广泛应用于企业级架构中提升服务的可用性、扩展性和安全性。 一、HAProxy 简介 1.1.HAProxy 是什么&#xff1f; 本质&#xff1a; 基于 C 语言开发 的轻量级工具&a…

【从0做项目】Java文档搜索引擎(9)烧脑终章!

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 文章导读 零&#xff1a;项目结果展示 一&#xff1a;导入 二&#xff1a;问题引入 1&#xff1a;情…

Linux 第二次脚本作业

1、需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 2、设计一个 Shell 程序&#xff0c;在/userdata 目录下建立50个目录&#xff0c;即 user1~user50&#xff0c;并设置每个目录的权限&#xff0c;其中其他用户的权…

mysql的源码包安装

安装方式一&#xff1a;&#xff08;编译好的直接安装&#xff09; 1.添加一块10G的硬盘&#xff0c;给root逻辑卷扩容 &#xff08;下面安装方式二有&#xff0c;一模一样的装就行&#xff0c;我就不写了&#xff0c;再写的话篇幅就太长了&#xff09; 2.下载编译好的源码包…

#渗透测试#批量漏洞挖掘#畅捷通T+远程命令执行漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 一、漏洞概况 二、攻击特征 三、应急处置…

【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?

前言&#xff1a; Hello大家好&#xff0c;我是Dream。不知不觉2024年已经过去&#xff0c;自己也马上迈入23岁&#xff0c;感慨时间飞快&#xff0c;从19岁刚入大学加入CSDN&#xff0c;到现在大学毕业已经整整四年了。CSDN陪伴我走过了最青涩的四年大学时光&#xff0c;在这里…

06排序 + 查找(D1_排序(D1_基础学习))

目录 学习预热&#xff1a;基础知识 一、什么是排序 二、为什么要排序 三、排序的稳定性 四、排序稳定性的意义 五、排序分类方式 方式一&#xff1a;内外分类 方式二&#xff1a;比较分类 六、排序算法性能评估 1. 算法的时间复杂度 2. 算法的空间复杂度 七、知识小…

【数据挖掘】深度挖掘

【数据挖掘】深度挖掘 目录&#xff1a;1. 减少样本集的数量知识点示例 2. 对噪声比集剪枝知识点示例建立局部树代码示例&#xff08;使用 Python 和 scikit - learn 库构建局部决策树&#xff09;代码解释注意事项 最大超平面定义原理求解方法代码示例&#xff08;使用 Python…

【Linux】基于UDP/TCP套接字编程与守护进程

目录 一、网路套接字编程 &#xff08;一&#xff09;基础概念 1、源IP地址与目的IP地址 2、端口号 3、TCP与UDP 4、网络字节序 &#xff08;二&#xff09;套接字编程接口 1、socket 常见API 2、sockaddr结构 &#xff08;三&#xff09;UDP套接字 1、UDP服务器创建…

C++跳表实现,封装成Skiplist类

跳表 (Skip List) 是由 William Pugh 发明的一种查找数据结构&#xff0c;支持对数据的快速查找&#xff0c;插入和删除。 跳表的期望空间复杂度为O(n) &#xff0c;跳表的查询&#xff0c;插入和删除操作的期望时间复杂度都为O(logn)。 算法讲解149【扩展】有序表专题2-跳表_哔…

【uni-app】对齐胶囊容器组件

代码碎片 <template><div><view :style"{ height: ${statusBarHeight}px }"></view><viewclass"":style"{height: ${menuButtonHeight menuButtonPadding * 2}px,width: ${menuButtonInfo.left}px,}"><slot …

计算机毕业设计SpringBoot+Vue.jst0甘肃非物质文化网站(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

制造行业CRM选哪家?中大型企业CRM选型方案

在当今竞争激烈的制造行业中&#xff0c;企业对于客户关系管理&#xff08;CRM&#xff09;系统的需求日益增强&#xff0c;高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在制造业 CRM 市场中&#xff0c;纷享销客和销售易都备受关注&#xff0c;且各自有着…

R 语言科研绘图 --- 散点图-汇总

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

从零开始的网站搭建(以照片/文本/视频信息通信网站为例)

本文面向已经有一些编程基础&#xff08;会至少一门编程语言&#xff0c;比如python&#xff09;&#xff0c;但是没有搭建过web应用的人群&#xff0c;会写得尽量细致。重点介绍流程和部署云端的步骤&#xff0c;具体javascript代码怎么写之类的&#xff0c;这里不会涉及。 搭…

Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持

作者&#xff1a;Hemant Malik 及 Joan Fontanals Martnez 探索如何使用 Elasticsearch Open Inference API 访问 Jina AI 模型。 我们在 Jina AI 的朋友们将 Jina AI 的嵌入模型和重新排名产品的原生集成添加到 Elasticsearch 开放推理 API 中。这包括对行业领先的多语言文本嵌…

Unity学习part4

1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作&#xff0c;更方便&#xff0c;画布与游戏窗口的比例一般默认相同 如图所示&#xff0c;图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式&#xff1a;屏幕空间--覆盖&#xff0c;指画布覆盖在游戏物体渲…

进程概念、PCB及进程查看

文章目录 一.进程的概念进程控制块&#xff08;PCB&#xff09; 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序&#xff0c;而程序是存放在磁盘的&#xff0c;cpu要想执行程序的指…

php session数据存储位置选择

PHP session 数据的存储位置可以通过配置文件或者代码来进行设置。默认情况下&#xff0c;session 数据是存储在服务器的文件系统中的。你可以将 session 数据存储在其他地方&#xff0c;例如数据库、缓存等。 基础概念 PHP session默认情况下将数据存储在服务器端的临时文件中…