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

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity学习46:反向动力学IK

目录 1 正向动力学和反向动力学 1.1 正向动力学 1.2 反向动力学 1.3 实现目标 2 实现反向动力 2.1 先定义一个目标 2.2 动画层layer&#xff0c;需要加 IK pass 2.3 增加头部朝向代码 2.3.1 专门的IK方法 OnAnimatorIK(int layerIndex){} 2.3.2 增加朝向代码 2.4 …

力扣hot100——螺旋矩阵 超简单易懂的模拟搜索方法

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 解法思路&#xff1a; // 模拟螺旋搜索设定四个边界// left right// top |————————————————|// | |// |…

格瑞普推出革命性半固态电池,为行业无人机续航注入未来动力

引言&#xff1a;行业痛点与解决方案 在行业无人机快速发展的今天&#xff0c;续航时间短、安全性不足以及效率低下等问题始终是行业难题。无论是物流运输、电力巡检&#xff0c;还是农业植保&#xff0c;用户对更持久、更安全、更高效的电池技术充满期待。 今天&#xff0c;…

C++【多态】

通俗来说&#xff0c;多态就是指同一个操作或者行为在不同的对象上可以有不同的表现形式或实现方式。举个例子&#xff1a;以 “吃” 这个行为为例&#xff0c;不同的动物有不同的 “吃” 的方式和内容。比如&#xff0c;猫吃鱼、狗吃肉、兔子吃草&#xff0c;虽然都是 “吃” …

《道德经的启示:人际关系交往的智慧》

第二章:人际关系交往的智慧 🤝 引言:现代人际关系的困境 🌟 时代背景:超连接时代的人际迷思 🌐 在这个前所未有的超连接时代,我们似乎比任何时候都更"在线"、更"联系",但真正的人际连接却越发稀缺。你是否也有过这样的困扰: 🏢 职场上愈是…

一个前端,如何同时联调多个后端

文章目录 场景解决方案思路实现步骤创建项目目标前端配置安装cross-env配置vue.config.js配置package.json 测试 场景 一个前端&#xff0c;需要同时和N个后端联调 一个需求里有若干个模块&#xff0c;分别给不同的后端开发&#xff0c;前端需要和N个后端联调 本地开启一个端…

HTML5+CSS多层级ol标签序号样式问题

在CSS中&#xff0c;ol标签用于创建有序列表&#xff0c;而多层级的ol标签可以通过CSS实现不同的序号样式。以下是一些常见的问题和解决方案&#xff1a; 1. 多层级ol的序号格式问题 默认情况下&#xff0c;多层级的ol标签会自动继承父级的序号格式&#xff0c;但有时我们可能…

DeepSeek全栈技术体系解密:从算法源码到企业级智能体开发实战

在AGI技术加速演进的时代背景下&#xff0c;DeepSeek作为行业级大模型的代表&#xff0c;正在重塑智能系统的开发范式。本课程体系首次系统性披露DeepSeek技术栈的完整实现细节&#xff0c;涵盖从底层算法创新、工程架构设计到企业级落地的全链条知识体系。 课程核心价值矩阵 …

CTA 血管重建,三维重建,血管三维重建

CT检查在临床中应用十分广泛&#xff0c;CT以其扫描速度快&#xff0c;对骨头及钙化敏感而具有部分优势。 CTA是CT血管成像&#xff0c;是CT临床应用中一个非常重要的部分&#xff0c;由于血管及其背景软组织自然对比差&#xff0c;常规CT平扫往往难以显示血管。在行CTA检查的时…

基础排序算法

冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;一种交换排序&#xff0c;它的基本思想是&#xff1a;两两比较相邻记录的关键字&#xff0c;如果反序则交换&#xff0c;直到没有反序的记录为止。 以下代码是改进的冒泡算法&#xff0c;在排序好了之后可以直接跳出循环…

什么是神经网络?

0 前言 神经网络是一种人工智能方法&#xff0c;用于教计算机以受人脑启发的方式处理数据。这是一种机器学习过程&#xff0c;称为深度学习&#xff0c;它使用类似于人脑的分层结构中的互连节点或神经元。它可以创建自适应系统&#xff0c;计算机使用该系统来从错误中进行学习…

MySQL 主从复制原理及其工作过程

一、MySQL主从复制原理 MySQL 主从复制是一种将数据从一个 MySQL 数据库服务器&#xff08;主服务器&#xff0c;Master&#xff09;复制到一个或多个 MySQL 数据库服务器&#xff08;从服务器&#xff0c;Slave&#xff09;的技术。以下简述其原理&#xff0c;主要包含三个核…

Ext系列文件系统 -- 磁盘结构,磁盘分区,inode,ext文件系统,软硬链接

目录 1.理解硬盘 1.1 磁盘、服务器、机柜、机房 1.2 磁盘物理结构 1.3 磁盘的存储结构 1.4 磁盘的逻辑结构 1.4.1 理解逻辑结构 1.4.2 真实过程 1.5 CHS地址和LBA地址的相互转换 2.引入文件系统 2.1 “块”概念 2.2 “分区”概念 2.3 “inode”概念 3.ext2文件系…

C# 背景 透明 抗锯齿 (效果完美)

主要是通过 P/Invoke 技术调用 Windows API 函数 gdi32.dll/user32.dll&#xff0c;同时定义了一些结构体来配合这些 API 函数的使用&#xff0c;常用于处理图形绘制、窗口显示等操作。 运行查看效果 局部放大&#xff0c;抗锯齿效果很不错,尾巴毛毛清晰可见。 using System; u…

Elasticsearch 混合搜索 - Hybrid Search

作者&#xff1a;来自 Elastic Valentin Crettaz 了解混合搜索、Elasticsearch 支持的混合搜索查询类型以及如何制作它们。 本文是三篇系列文章中的最后一篇&#xff0c;深入探讨了向量搜索&#xff08;又称语义搜索&#xff09;的复杂性以及它在 Elasticsearch 中的实现方式。…

【分布式理论12】事务协调者高可用:分布式选举算法

文章目录 一、分布式系统中事务协调的问题二、分布式选举算法1. Bully算法2. Raft算法3. ZAB算法 三、小结与比较 一、分布式系统中事务协调的问题 在分布式系统中&#xff0c;常常有多个节点&#xff08;应用&#xff09;共同处理不同的事务和资源。前文 【分布式理论9】分布式…

Zabbix 7.2实操指南:基于OpenEuler系统安装Zabbix 7.2

原文出处&#xff1a;乐维社区 部署环境 openEuler 22.03 LTS PHP 8.0 Apache Mysql 8.0 MySQL数据库 6.0 以上版本需要安装mysql8.0以上版本的数据库&#xff08;以mysql为例子&#xff09;。 欧拉系统自带 mysql8.0 的源&#xff0c;无需要安装额外的源。 安装mysql …

什么是DeFi (去中心化金融)

DeFi (去中心化金融) 概述 &#x1f4b0; 1. DeFi 基础概念 1.1 什么是 DeFi&#xff1f; DeFi 是建立在区块链上的金融服务生态系统&#xff0c;它&#xff1a; 无需中心化中介开放且透明无需许可即可参与代码即法律 1.2 DeFi 的优势 开放性&#xff1a;任何人都可以参与…

python-leetcode 39.二叉树的直径

题目&#xff1a; 给定一棵二叉树的根节点&#xff0c;返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一&#xff1a;深度优先搜索 一条路径的长度为该路…

python爬虫系列课程2:如何下载Xpath Helper

python爬虫系列课程2:如何下载Xpath Helper 一、访问极简插件官网二、点击搜索按钮三、输入xpath并点击搜索四、点击推荐下载五、将下载下来的文件解压缩六、打开扩展程序界面七、将xpath.crx文件拖入扩展程序界面一、访问极简插件官网 极简插件官网地址:https://chrome.zzz…