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

【Spring】1. Maven项目管理

封面

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!


小杨近些在学习人工智能方面的知识,发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • 1. 什么是 Maven
  • 2. 创建 Maven 项目
  • 3. Maven 的作用
    • 3.1 统一项目结构
    • 3.2 项目构建
    • 3.3 依赖管理
      • 依赖配置
      • 依赖传递
      • 依赖排除
  • 4. Maven 仓库
    • 4.1 本地仓库
    • 4.2 中央仓库
      • 查找 jar 包的地址
    • 4.3 私有服务器,也称私服
    • 4.4 Maven 设置国内源

1. 什么是 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.
翻译:Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中心信息片段管理项目的构建、报告和文档

Maven 是⼀个项目管理工具, 通过 pom.xml文件的配置获取 jar包,而不用手动去添加 jar包。

前面学习 JDBC 的时候,就需要手动的去添加 jar包,学习了 Maven 就不用去手动添加 jar包了,只需要添加几行代码就可以添加 jar包了。
image.png

🚩:为什么要学习 Maven?

简单, 方便, 提高我们的开发效率, 减少我们的开发Bug.

2. 创建 Maven 项目

IDEA 本身已经集成了 Maven , 我们可以直接是用, 无需安装

  1. File -> New -> Project

image.png

  1. 填写项目名、存放位置、创建方式选择 Maven、选择JDK版本

image.png

  1. 点击Create,就创建好了 Maven 项目

image.png

3. Maven 的作用

3.1 统一项目结构

统一项目结构:提供标准、统一的项目结构
任何编译器创建 Maven 项目,其项目的结构都是一样的
image.png

3.2 项目构建

Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的自动化项目构建方式
当我们开发了⼀个项目之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进行, 就显得特别麻烦, 而 Maven 给我们提供了⼀套简单的命令来完成项目的构建
image.png
比如:是用package命令就可以对项目进行打包操作
image.png
打包就是把所有的 class文件, 全部放在一起, 打成 jar 包或者 war

jar包和war包都是⼀种压缩文件

  1. jar包就是把开发人员已经写好的⼀些代码进行打包. 打好的 jar包就可以引入到其他项目中, 也可以直接是用这些 jar包中的类和属性. 另外也可以打成可执行 jar包, 这样的包就可以通过 java -jar命令来执行
  2. war包可以理解为是⼀个web项目,里面是项目的所有东西, 通常用于网站.

3.3 依赖管理

依赖管理:方便快捷的管理项目的依赖的资源(jar包),避免版本冲突的问题

pom.xml就是 Maven 的配置文件,用来描述项目的各种信息

依赖配置

依赖:只当前项目运行的所需要的 jar
比如:学习 JDBC 的时候,我们需要手动下载mysql-connector-java-5.1.47的包,并添加到项目中
image.png
如果是用 Maven, 我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了

<dependencies><!--放置项目需要的依赖坐标,可以多个-->
</dependencies>
  1. pom.xml文件中<dependencies>标签内,添加依赖坐标
<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>
</dependencies>
  1. 点击刷新按钮, 引入新加入的依赖jar

后续有添加新的jar包, 或者修改jar包版本, 都需要通过该方式在项目中添加依赖.

image.png

  1. 刷新完之后, 就可以在项目中看到新加入的jar

image.png

依赖传递

早期我们没有是用 maven时, 向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下.
比如 A 依赖 B, B依赖C, 那么 A项目引入 B 的同时, 也需要引入C, 如果我们手动管理这个依赖, 这个过程就会比较麻烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的?
但是用 maven 的话, 就可以避免管理所需依赖的关系。我们只需要在pom.xml文件中, 定义直接依赖就可以了, 由于 maven 的依赖具有传递性,所以会自动把所依赖的其他jar包也⼀起导入
image.png
如上图, 项目A 通过Maven 引入 Jar A 时, 会自动引入 Jar BJar C.
Jar A 和 项目B就是项目 A的直接依赖.
Jar B, Jar C是间接依赖.

  1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

依赖排除

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.0.6</version><!--排除依赖--><exclusions><exclusion><artifactId>spring-jcl</artifactId><groupId>org.springframework</groupId></exclusion></exclusions>
</dependency>

4. Maven 仓库

通过几行代码就可以把需要的 jar包放进项目中,是如何做到的呢?

<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>
</dependencies>

这个代码, 我们称之为 “坐标”, 也就是唯一的.
在 Maven中,根据groupIdartifactIdversion的配置,来唯一识别一个 jar包,缺一不可。
当我们在pom.xml文件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库里寻找 jar包, 并把他下载下来, 添加到项目中. 这个jar包下载的地方就称为仓库.
仓库:用于存储资源,管理各种jar
image.png
Maven仓库的本质就是⼀个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包, 插件等).
image.png
Maven仓库分为两大类: 本地仓库和远程仓库. 其中远程仓库又分为中央仓库, 私服 和其他公共库

4.1 本地仓库

本地仓库: 自己计算机上的一个目录(用来存储jar包)
当项目中引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar

  • 如果有,则在项目直接引入
  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库

image.png
idea配置 Maven
file->Settings->Maven
image.png
查看该仓库目录 可以看到该目录下有很多的jar(最开始是空的, 随着Maven的使用, 该仓库下文件会越来越多)
image.png

4.2 中央仓库

中央仓库: maven 软件中内置⼀个远程仓库地址,就是中央仓库,服务于整个互联网. 由 Maven 团队维护,全球唯一.
仓库地址:网址
可以通过https://mvnrepository.com 这个网址来查询并下载jar

查找 jar 包的地址

  1. 访问 https://mvnrepository.com
  2. 进行查找,比如 mysql

image.png

  1. 选择添加的 jar

image.png

  1. 查看 jar包坐标

image.png

4.3 私有服务器,也称私服

私服:一般由公司搭建的私有仓库。
私服属于某个公司,或者某个部门 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序又发生了变化
image.png
当Maven需要下载资源的时候

  1. 先从本地仓库获取, 本地仓库存在, 则直接返回
  2. 如果本地仓库没有, 就从私服请求, 私服存在该资源, 就直接返回
  3. 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在, 就报错了…
  4. 如果中央仓库中存在, 就先缓存在私服上之后,再缓存到本地仓库⾥, 再为Maven的下载请求提供服务

4.4 Maven 设置国内源

因为中央仓库在国外, 所以下载起来会⽐较慢, 所以咱们选择借助国内⼀些公开的远程仓库来下载资源
如何设置国内源
File->Settings
image.png

  1. 查看配置文件的地址, 如上图所示, Maven配置文件地址为:‪C:\APP\Java\apache-maven-3.6.1\conf\settings.xml

不同电脑设置的Maven路径不同
settingsrepository 可以修改设置为其他路径, 两个路径不要有中⽂

  1. 配置国内源

Maven 仓库默认是在国外官网, 国内使用时会比较慢,我们可以更换为阿里云的仓库
打开settings.xml, 在 mirrors 节点上,添加内容如下:

<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿⾥云公共仓库</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

相关文章:

【Spring】1. Maven项目管理

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…...

工业制造领涉及的8大常见管理系统,如mes、scada、aps、wms等

在工业生产和制造领域有一些常见的管理系统&#xff0c;很多小伙伴分不清&#xff0c;这次大美B端工场带领大家了解清楚。 MES&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;&#xff1a; MES是一种用于监控、控制和优化生产过程的软件系统…...

Lianwei 安全周报|2024.06.17

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 IDC&#xff1a;2024 第一季度中国安全硬件市场规模…...

海量数据处理利器 Roaring BitMap 原理介绍

作者&#xff1a;来自 vivo 互联网服务器团队- Zheng Rui 本文结合个人理解梳理了BitMap及Roaring BitMap的原理及使用&#xff0c;分别主要介绍了Roaring BitMap的存储方式及三种container类型及Java中Roaring BitMap相关API使用。 一、引言 在进行大数据开发时&#xff0c;…...

Javaweb登录校验

登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景&#xff1a;当我们想要访问一个网站时&am…...

vxe-table 列表过滤踩坑_vxe-table筛选

但是这个过滤输入值必须是跟列表的值必须一致才能查到&#xff0c;没做到模糊查询的功能&#xff0c;根据关键字来过滤并没有实现。 下面提供一下具体实现方法&#xff1a;&#xff08;关键字来过滤&#xff09; filterNameMethod({ option, row }) {if (row.name.indexOf(op…...

计算机网络:网络层 - IP数据报的转发

计算机网络&#xff1a;网络层 - IP数据报的转发 基于终点转发最长前缀匹配二叉线索树路由表特殊路由特定主机路由默认路由 IP多播 基于终点转发 路由器转发报文时&#xff0c;是通过报文中的目的地址字段来转发的&#xff0c;也即是说路由器只知道终点的IP地址&#xff0c;根…...

颠覆与创新:探寻Facebook未来的发展路径

Facebook&#xff0c;这个曾经引领社交网络革命的巨头&#xff0c;在如今竞争激烈的科技市场中&#xff0c;正面临着前所未有的挑战和机遇。如何在不断变化的数字世界中保持竞争力&#xff0c;成为业界领先者&#xff0c;这是摆在Facebook面前的重要课题。本文将探寻Facebook未…...

太湖远大毛利率下滑:研发费用率远低同行,募投项目合理性疑点重重

《港湾商业观察》黄懿 6月20日&#xff0c;浙江太湖远大新材料股份有限公司&#xff08;以下简称“太湖远大”&#xff0c;873743.NQ&#xff09;即将迎来过会。 2023年11月30日&#xff0c;太湖远大所提交的上市申请材料正式获北交所受理&#xff0c;保荐机构为招商证券&…...

赶紧收藏!2024 年最常见 20道设计模式面试题(八)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 20道设计模式面试题&#xff08;七&#xff09;-CSDN博客 十五、模板方法模式是如何在父类中定义算法框架的&#xff1f; 模板方法模式通过在父类&#xff08;通常是一个抽象类&#xff09;中定义算法的骨架&#x…...

JAVA学习-练习试用Java实现“比较版本号”

问题&#xff1a; 给定两个版本号 version1 和 version2 &#xff0c;请比较它们。 版本号由一个或多个修订号组成&#xff0c;各修订号由一个 . 连接。每个修订号由 多位数字 组成&#xff0c;可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号&#xff0c;…...

云原生分级SLA

云原生分级SLA&#xff08;Service Level Agreement&#xff0c;服务等级协议&#xff09;规则是为了确保云服务提供商和客户之间对服务性能、可用性和其他关键指标有明确的理解和期望。这些规则通常基于业务需求和技术实现来制定&#xff0c;并根据服务的不同级别进行分级。以…...

java干货 线程间通信

文章目录 一、线程间通信1.1 为什么要处理线程间通信&#xff1f;1.2 什么是等待唤醒机制&#xff1f; 二、等待唤醒机制使用2.1 等待唤醒机制用到的方法2.1.1 wait2.1.2 notify 2.2 线程通信代码实践2.2.1 重要说明2.2.2 代码 一、线程间通信 1.1 为什么要处理线程间通信&…...

【人机交互 复习】第6章 交互式系统的设计

一、设计框架 1.在建立了一组需求之后&#xff0c;设计即将开始&#xff0c;建议采取自上面下的方式&#xff0c;首先把重点放在大的方面&#xff0c;生成低保真且不包含具体细节的方案&#xff0c;一般通过写剧本来确定交互设计模式与逻辑。 2.设计框架&#xff1a; 先站在一个…...

1-函数极限与连续

1 2 平方项没有考虑到&#xff08;其正负&#xff09;...

【C++题解】1670 - 象棋大赛

问题&#xff1a;1670 - 象棋大赛 类型&#xff1a;分支问题 题目描述&#xff1a; 市里要组织象棋大赛&#xff0c;年龄在 8∼30 周岁之间的选手可以报名参赛。为了公平起见&#xff0c;大赛组委会将选手们分了青年组、少年组和儿童组&#xff0c;大赛组委会规定&#xff1a…...

Samba:用于高效无限上下文语言建模的简单混合状态空间模型

Samba: Simple Hybrid State Space Models for Efficient Unlimited Context Language Modeling &#x1f4dc; 文献卡 Samba: Simple Hybrid State Space Models for Efficient Unlimited Context Language Modeling作者: Liliang Ren; Yang Liu; Yadong Lu; Yelong Shen; …...

通俗易懂的ChatGPT原理简介

一、引言 随着人工智能的发展&#xff0c;聊天机器人已经成为我们生活中的常见工具。而在众多聊天机器人中&#xff0c;ChatGPT 无疑是最受关注的一个。ChatGPT 是由 OpenAI 开发的一种基于生成式预训练模型&#xff08;GPT&#xff09;的大型语言模型。本文将通俗易懂地介绍 …...

你认为 AI 作图程序「MidJourney」有哪些比较好用的关键词?

玩了一段时间的MidJourney&#xff0c;打算把这个回答做成资源帖。也欢迎在评论区补充讨论。 MidJourney的极简指南 快速上手 装discord&#xff0c;或者直接打开网址 https://discord.gg/midjourney 注册用户。进入Midjourney的官方服务器后&#xff0c;在左侧栏找一个newb…...

9.2JavaEE——JDBCTemplate的常用方法(一)excute()方法

execute()方法用于执行SQL语句&#xff0c;其语法格式如下&#xff1a; jdTemplate.execute("SQL 语句");下面以创建数据表的SQL语句为例&#xff0c;来演示excute()方法的使用&#xff0c;具体步骤如下。 1、创建数据库 在MySQL中&#xff0c;创建一个名为spring的…...

正向代理和反向代理的区别

正向代理和反向代理的主要区别在于代理服务器所服务的对象不同。 正向代理&#xff08;Forward Proxy&#xff09;&#xff1a;正向代理的客户端是内部网络的用户。当内部网络的用户想要访问外部网络&#xff08;例如互联网&#xff09;时&#xff0c;可以通过正向代理服务器来…...

express入门03增删改查

目录 1 搭建服务器2 静态文件托管3 引入bootstrap4 引入jquery5 编写后端接口5.1 添加列表查询方法5.2 添加路由5.3 添加数据表格 总结 我们前两篇介绍了如何利用express搭建服务器&#xff0c;如何实现静态资源托管。那利用这两篇的知识点&#xff0c;我们就可以实现一个小功能…...

【usb设备端口异常】——使用ls /dev/video*查看设备号时出现报错:ls:无法访问‘/dev/video*‘: 没有那个文件或目录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ls:无法访问/dev/video*: 没有那个文件或目录1. 问题描述2. 原因分析3. 解决方法 总结 前言 一、ls:无法访问’/dev/video*: 没有那个文件或目录 使用的这…...

Java实现异步开发的方式

1&#xff09;、继承 Thread 2&#xff09;、实现 Runnable 接口 3&#xff09;、实现 Callable 接口 FutureTask &#xff08;可以拿到返回结果&#xff0c;可以处理异常&#xff09; 4&#xff09;、使用线程池 区别&#xff1a;1、2&#xff09;不能得到返回值 …...

小知识点快速总结:Batch Normalization Layer(BN层)的作用

本系列文章只做简要总结&#xff0c;不详细说明原理和公式。 目录 1. 参考文章2. 主要作用3. 具体分析3.1 正则化&#xff0c;降低过拟合3.2 提高模型收敛速度&#xff0c;加速训练3.3 减少梯度爆炸或者梯度消失的情况 4. 补充4.1 BN层做的是标准化不是归一化4.2 BN层的公式4.…...

【SpringCloud】负载均衡(Spring Cloud LoadBalancer)

负载均衡 当服务流量增大时&#xff0c;通常会采用增加机器的方式进行扩容。负载均衡就是用来在多个机器或者其他资源中&#xff0c;按照一定的规则合理分配负载。其中的实现可以分成客户端负载均衡和服务端负载均衡。 服务端负载均衡 在服务端进行负载均衡的算法分配。 比…...

三生随记——输入法之谜

在深夜的电脑前&#xff0c;李浩专心致志地敲打着键盘&#xff0c;为他的小说写下最后一章。然而&#xff0c;随着他不断输入文字&#xff0c;他渐渐察觉到一丝不对劲。每次他尝试输入特定的词汇&#xff0c;输入法都会自动跳转到一些与主题毫不相关的句子&#xff0c;甚至有些…...

【名词解释】Unity中的3D物理系统:刚体

Unity中的3D物理系统是用于模拟现实世界中物体的运动和相互作用的一套工具和组件。刚体&#xff08;Rigidbody&#xff09;是Unity 3D物理系统中的一个核心组件&#xff0c;它允许游戏对象&#xff08;GameObject&#xff09;受到重力和外力的影响&#xff0c;并参与碰撞检测。…...

icon转svg处理

一般情况下&#xff0c;图标我们可以找UI或者去iconfont.cn获得一个svg格式的文件。然后再IDE中以文本的方式打开&#xff0c;然后格式化&#xff0c;就可以看到代码。代码中一般是最外层一个svg标签&#xff0c;里面是一个或者多个path。这个时候&#xff0c;我们使用h方法来实…...

已成功见刊检索的国际学术会议论文海报展示(2)

【先投稿先送审】第四届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2024) 大会官网&#xff1a;www.citce.org 时间地点&#xff1a;2024年11月1-3日&#xff0c;中国-武汉 收录检索&#xff1a;EI Compendex&#xff0c;Scopus 主办单位&#xff1a;四川师范…...

如何链接自己做的网站/东营百度推广电话

一面&#xff1a; 个人介绍加项目介绍20分钟 微服务架构是什么&#xff0c;它的优缺点&#xff1f; ACID CAP BASE理论 分布式一致性协议&#xff0c;二段、三段、TCC&#xff0c;优缺点 RPC过程 服务注册中心宕机了怎么办&#xff1f; 微服务还有其他什么组件 分布式架…...

c 做网站用什么框架/体验式营销案例

为什么80%的码农都做不了架构师&#xff1f;>>> 不论先装Windows XP Professional还是先装Windows Vista&#xff0c;还是Windows都无关紧要&#xff0c;最重要的是后面的操作&#xff0c;现在将介绍安装双系统的方法。 一、全新安装双系统 这里关系到启动双系统…...

西宁做网站君博推荐/武汉百度开户电话

正好项目中需要显示天气&#xff0c;以下是搜罗到的简单方法&#xff0c;分享下~ 1.中国天气网http://service.weather.com.cn/plugin/index.shtml 中国天气网插件栏目提供多种预报类插件服务产品的免费天气代码&#xff0c;可实现全国2348个县级以上城市天气预报查询&#x…...

网站备案期间打不开/成都seo的方法

0. 现象 redis某节点出现宕机,删除后重新部署出现如下问题: unrecoverable erro:corrupted cluster config file 2.原因分析 /var/lib/redis/nodes.conf,频繁重启虚机的过程中文件破坏,信息不完整或数据不一致造成。 3. 解决方案 步骤1:数据平台中停止Redis服务...

b2c网站建设需要多少钱/营销型网站建设的公司

目前有越来越多的同学在学习人工智能&#xff0c;也有越来越多的开发者学习人工智能。毕竟&#xff0c;现在人工智能辣么火&#xff01;然鹅&#xff0c;目前大家面临的问题是&#xff0c;时间有限&#xff0c;资料繁多。老祖宗早就告诉过我们&#xff0c;读书贵在精&#xff0…...

群晖如何做网站服务器/淘宝seo是什么意思啊

想当年&#xff0c;想弄iOS的版本必须弄台mac机器&#xff0c;虽然一开始要弄iOS的时候觉得在mac上开发感觉挺高富帅的&#xff0c;但是做多了之后就觉得在mac上开发各种不方便。现在好了&#xff0c;Unity3D 4.3开始支持在Windows切换到iOS平台&#xff0c;可以设置iOS特定参数…...