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

news/2025/2/26 17:53:26/

前言:

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

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

        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.ppmy.cn/news/1575060.html

相关文章

R语言安装教程(附安装包)R语言4.3.2版本安装教程

文章目录 前言一、安装包下载二、R-4.3.2安装步骤三、rtools43安装步骤四、RStudio安装步骤 前言 本教程将详细、全面地为你介绍在 Windows 系统下安装 R 语言 4.3.2 的具体步骤。无论你是初涉数据领域的新手&#xff0c;还是希望更新知识体系的专业人士&#xff0c;只要按照本…

zookeeper 客户端常用命令

ZooKeeper 是一个分布式协调服务&#xff0c;它的客户端命令行工具&#xff08;zkCli.sh 或 zkCli.cmd&#xff09;提供了一系列常用命令&#xff0c;用于操作和管理 ZooKeeper 服务中的数据节点&#xff08;ZNode&#xff09;。以下是对 ZooKeeper 客户端常用命令的简要介绍&a…

从零实现机器人自主避障

1. 编译工具安装 sudo apt update sudo apt install python3-catkin-pkg python3-rosdep python3-rosinstall-generator python3-wstool python3-rosinstall build-essential sudo rosdep init rosdep update2. 构建节点 mkdir -p ~/ros2_ws/src cd ~/ros2_ws ros2 pkg creat…

STM32 最小系统

STM32 最小系统 最小系统就是保证 MCU 正常运行的最低要求&#xff0c;一般是指 MCU 的供电、复位、晶振、BOOT 等部分。 最小系统需求如表&#xff1a;F407/F103最小系统都是一样的

山东大学软件学院nosql实验一环境配置

环境&#xff1a;前端vue后端springboot 软件环境&#xff1a; MongoDB MongoDBCompass 实验步骤与内容&#xff1a; 在官网下载安装包&#xff08;最新版&#xff09; 配置环境环境变量 在“高级系统设置-环境变量”中&#xff0c;可以将MongoDB添加到环境变量Path中(D:\…

[前端] 学习内容总结,css样式居中以及点击包裹a标签的容器元素也能触发a标签的点击事件

一、Css样式居中 1.1、用flex布局来使子元素居中 flex中justify-content是指定子元素在主轴上的对齐方式&#xff1b;align-items是子元素在交叉轴上的对齐方式。 所以我们可以通过设定这两个属性为居中来使子元素居中。 .navbar {display: flex; //flex 布局justify-conten…

智慧物流小程序(论文源码调试讲解)

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…

【C语言】指针笔试题

前言&#xff1a;上期我们介绍了sizeof与strlen的辨析以及sizeof&#xff0c;strlen相关的一些笔试题&#xff0c;这期我们主要来讲指针运算相关的一些笔试题&#xff0c;以此来巩固我们之前所学的指针运算&#xff01; 文章目录 一&#xff0c;指针笔试题1&#xff0c;题目一…