当前位置: 首页 > news >正文

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

前言:

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

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

        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文件已经添加过了,可以直接使用!!

 

相关文章:

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

前言&#xff1a; 当我们创建项目的时候&#xff0c;第一步少不了搭建环境的相关准备工作。 那么如果想让我们的项目做起来方便快捷&#xff0c;应该引入更多的管理工具&#xff0c;帮我们管理。 Maven的出现帮我们大大解决了管理的难题&#xff01;&#xff01; Maven&#xf…...

关于前后端分离跨域问题——使用DeepSeek分析查错

我前端使用ant design vue pro框架&#xff0c;后端使用kratos框架开发。因为之前也解决过跨域问题&#xff0c;正常是在后端的http请求中加入中间件&#xff0c;设置跨域需要通过的字段即可&#xff0c;代码如下所示&#xff1a; func NewHTTPServer(c *conf.Server, s *conf…...

三层渗透测试-DMZ区域 二三层设备区域

DMZ区域渗透 信息收集 首先先进行信息收集&#xff0c;这里我们可以选择多种的信息收集方式&#xff0c;例如nmap如此之类的&#xff0c;我的建议是&#xff0c;可以通过自己现有的手里小工具&#xff0c;例如无影&#xff0c;密探这种工具&#xff0c;进行一个信息收集。以免…...

领航Linux UDP:构建高效网络新纪元

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言Udp和Tcp的异同相同点不同点总结 1.1、socket1.2、bind1.3、recvfrom1.4、sendto2.1、代码2.1、说明3.1、代码3.2、说明 引言 在前几篇博客中&#xff0c;我们学习了Linux网络编程中的一些概念。…...

基于MATLAB的均匀面阵MUSIC算法DOA估计仿真

基于MATLAB的均匀面阵MUSIC算法DOA估计仿真 文章目录 前言一、二维MUSIC算法原理二、二维MUSIC算法MATLAB仿真三、MATLAB源代码总结 前言 \;\;\;\;\; 在波达角估计算法中&#xff0c;MUSIC 算法与ESPRIT算法属于特征结构子空间算法&#xff0c;是波达角估计算法中的基石。在前面…...

HTML/CSS中后代选择器

1.作用:选中指定元素中,符合要求的后代元素. 2.语法:选择器1 选择器2 选择器3 ...... 选择器n(使用空格隔开) 3.举例: /* 选中ul中的所有li */ul li{color: red;}/* 选中类名为subject元素中的所有li */.subject li{color: blue;}/* 选中类名为subject元素中的所有类名为f…...

深入解析「卡顿帧堆栈」 | UWA GPM 2.0 技术细节与常见问题

在游戏开发过程中&#xff0c;卡顿问题一直是影响玩家体验的关键因素。UWA GPM 2.0全新推出的「卡顿帧堆栈」功能&#xff0c;专为研发团队提供精准、高效的卡顿分析方案&#xff0c;能够直观呈现游戏运行时的堆栈信息&#xff0c;助力团队迅速找到性能瓶颈。该功能一经上线&am…...

推荐几款较好的开源成熟框架

一. 若依&#xff1a; 1. 官方网站&#xff1a;https://doc.ruoyi.vip/ruoyi/ 2. 若依SpringBootVueElement 的后台管理系统&#xff1a;https://gitee.com/y_project/RuoYi-Vue 3. 若依SpringBootVueElement 的后台管理系统&#xff1a;https://gitee.com/y_project/RuoYi-Cl…...

Mysql全文索引

引言 在MySQL 5.7.6之前&#xff0c;全文索引只支持英文全文索引&#xff0c;不支持中文全文索引&#xff0c;需要利用分词器把中文段落预处理拆分成单词&#xff0c;然后存入数据库。 从MySQL 5.7.6开始&#xff0c;MySQL内置了ngram全文解析器&#xff0c;用来支持中文、日文…...

配置终端代理

普通的魔法开启之后终端下git clone等命令仍然会无法使用&#xff0c;额外需要手动配置终端代理。 sudo vim /etc/apt/apt.conf.d/99proxyAcquire::http::Proxy "http://127.0.0.1:12334"; Acquire::https::Proxy "http://127.0.0.1:12334";在debian安装时…...

51单片机学习之旅——在LCD1602上显示时钟

新建工程 打开软件 LCD1602模块代码添加 因为我们在LCD1602上显示时钟&#xff0c;因此我们需要添加LCD1602的模块代码 跳转到这条博客51单片机学习之旅——模块化编程集_51单片机ruminant-CSDN博客&#xff0c;复制相关代码跳转到这条博客51单片机学习之旅——模块化编程集…...

Jest单元测试

由于格式和图片解析问题&#xff0c;可前往 阅读原文 前端自动化测试在提高代码质量、减少错误、提高团队协作和加速交付流程方面发挥着重要作用。它是现代软件开发中不可或缺的一部分&#xff0c;可以帮助开发团队构建可靠、高质量的应用程序 单元测试&#xff08;Unit Testi…...

C++字符串处理指南:从基础操作到性能优化——基于std::string的全面解析

博主将从C标准库中的 std::string 出发&#xff0c;详细探讨字符串的处理方法&#xff0c;涵盖常见操作、性能优化和实际应用场景。以下内容将围绕std::string 的使用展开&#xff0c;结合代码示例进行说明。 一、std::string 的基本操作 1.1 创建与初始化 std::string 提供了…...

JVM类加载过程详解:从字节码到内存的蜕变之旅

一、类加载的意义与整体流程 在Java中&#xff0c;每一个.java文件经过编译都会生成.class字节码文件。但字节码本身并不能直接运行&#xff0c;必须通过 类加载&#xff08;Class Loading&#xff09;将其转化为JVM内存中的数据结构&#xff0c;才能被程序调用。 类加载过程就…...

【力扣Hot100详解】解锁“字母异位词分组”:用排序魔法一键通关力扣!

字母异位词分组&#xff0c;力扣第49题&#xff0c;看似是“找不同”的排列游戏&#xff0c;实则是哈希表与字符串处理的经典结合。这道题就像是一把钥匙&#xff0c;能帮你打开“如何高效归类数据”的算法大门。今天&#xff0c;我们就用 Java 带你用“排序魔法”轻松破解它&a…...

vite配置scss全局变量

vite配置scss全局变量 创建单独文件variable.scss在其中定义变量 vite.config.ts中配置 import { defineConfig } from vite import vue from vitejs/plugin-vue import path from path// https://vite.dev/config/ export default defineConfig({plugins: [vue()],resolve:…...

Spring Boot01(注解、)---java八股

Spring Boot中常用注解及其底层实现 1、SpringBootApplication注解&#xff1a; SpringBootApplication注解&#xff1a;这个注解标识了一个SpringBoot工程&#xff0c;它实际上是另外三个注解的组合&#xff0c;这三个注解是&#xff1a; aSpringBootConfiguration&#xff1a…...

2.19学习记录

Web easyupload3.0 这是一道构造.htaccess文件的传马 如下&#xff1a; <FilesMatch "jpg">SetHandler application/x-httpd-php </FilesMatch>.htaccess文件可以作为一个解释器&#xff0c;可以将传进去的图片马改为php马上传之后再传个图片马&#…...

汽车免拆诊断案例 | 2013 款奔驰 S300L 车起步时车身明显抖动

故障现象  一辆2013款奔驰S300L车&#xff0c;搭载272 946发动机&#xff0c;累计行驶里程约为15万km。车主反映&#xff0c;将挡位置于D挡&#xff0c;稍微释放一点制动踏板&#xff0c;车辆蠕动时车身明显抖动&#xff0c;类似气缸失火时的抖动&#xff0c;又类似手动变速器…...

【HeadFirst系列之HeadFirst设计模式】第5天之工厂模式:比萨店的秘密武器,轻松搞定对象创建!

工厂模式&#xff1a;比萨店的秘密武器&#xff0c;轻松搞定对象创建&#xff01; 大家好&#xff0c;今天我们来聊聊设计模式中的工厂模式。如果你曾经为对象的创建感到头疼&#xff0c;或者觉得代码中到处都是 new 关键字&#xff0c;那么工厂模式就是你的救星&#xff01;本…...

MAYA-W463-00B,融合双频Wi-Fi 6与蓝牙5.4 LE的无线模块

简介今天我要向大家介绍的是 u-blox 的无线模块——MAYA-W463-00B。它不仅支持 MU-MIMO 技术&#xff0c;还具备 Station&#xff08;站点&#xff09;、Access Point&#xff08;接入点&#xff09;以及 Wi-Fi Direct 等多种灵活的工作模式。与此同时&#xff0c;它还集成了符…...

UBX-M10150-CC,支持低功耗精准定位的超小型GNSS芯片

简介今天我要向大家介绍的是 u-blox 的GNSS芯片——UBX-M10150-CC。它是一款专为满足可穿戴设备&#xff08;如运动手表、智能手表&#xff09;及其他对尺寸和电池寿命有严格要求的设备而设计的超低功耗标准精度 GNSS 芯片。它基于 u-blox M10 引擎构建&#xff0c;支持 GPS、G…...

3个实用技巧:如何高效管理Windows驱动程序存储区

3个实用技巧&#xff1a;如何高效管理Windows驱动程序存储区 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Driver Store Explorer&#xff08;简称DSE&#xff09;是一款专业级的Wind…...

如何快速配置Parsec虚拟显示驱动:实现多显示器扩展的完整指南

如何快速配置Parsec虚拟显示驱动&#xff1a;实现多显示器扩展的完整指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否曾经因为显示器数量不足而限制了工作效率&#xf…...

3分钟解锁百度网盘资源:baidupankey如何让提取码查询变得如此简单?

3分钟解锁百度网盘资源&#xff1a;baidupankey如何让提取码查询变得如此简单&#xff1f; 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾在深夜急需下载学习资料&#xff0c;却被一个简单的提取码卡住半小时&#x…...

数据驱动直流充电桩整流器开路故障识别技术【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;查看文章底部二维码&#xff08;1&#xff09;重加权自适应缩放网络的故障特征增强提取&#xff…...

企业如何用客户关系管理系统提升销售业绩?3步实现业绩增长的实战指南

很多企业在销售管理中会遇到这样的困境&#xff1a;客户没少开发&#xff0c;但成交率一直上不去&#xff1b;销售员没少努力&#xff0c;但业绩就是不见增长&#xff1b;团队没少开会&#xff0c;但问题总是反复出现。实际上&#xff0c;这些都是客户关系管理系统可以解决的问…...

2026AI 写论文软件:亲测

作为一名刚完成硕博连读的学术人&#xff0c;过去一年我把AI 论文工具都试了一遍。从本科毕业论文到核心期刊&#xff0c;踩过的坑能绕图书馆三圈——AI 生成内容查重率暴红、参考文献幻觉、学术语言生硬、逻辑链断裂... 这些痛谁懂&#xff1f; 一、掌桥科研 AI 论文&#xff…...

如何用XXMI启动器一站式管理6款热门二次元游戏模组:终极模组管理解决方案

如何用XXMI启动器一站式管理6款热门二次元游戏模组&#xff1a;终极模组管理解决方案 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一款革命性的游戏模组管理平台…...

基于Hermes Agent与Railway的自主AI智能体一键部署实战

1. 项目概述&#xff1a;一键部署你的智能AI助手 最近在折腾AI智能体&#xff0c;发现了一个挺有意思的项目&#xff1a;Hermes Agent。简单来说&#xff0c;这是一个能自我进化的自主AI智能体&#xff0c;最吸引我的是它原生支持Telegram&#xff0c;这意味着你可以直接在Tel…...