什么是Maven以及如何配置Maven

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

文章目录

  • 1.Maven
    • 1.1什么是Maven
    • 1.2Maven的好处
    • 1.3使用idea创建一个Maven项目
    • 1.4Maven的核心功能
      • 1.4.1项目构建
    • 1.5Maven仓库
      • 1.5.2 中央仓库
      • 1.5.3 私有服务器(私服)
    • 1.6Maven设置国内源

1.Maven

1.1什么是Maven

官方对于Maven的描述:

Apache Maven is a software project management and comprehension tool.
Based on theconcept of a project object model (POM), Maven can manage
a project’s build, reporting anddocumentation from a central piece
ofinformation.
即Maven是一个项目管理工具。基于POM(project Object
Model,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具

也就是说,Maven就是一个项目管理工具,通过pow.xml文件的配置获取jar包,而不是之前的手动添加jar包

1.2Maven的好处

就是为了简单,方便,提高开发效率,减少开发bug

1.3使用idea创建一个Maven项目

在这里插入图片描述
在这里插入图片描述

1.4Maven的核心功能

主要体现在两个方面

1.4.1项目构建

Maven为我们提供了一套简单命令来完成项目的构建
在这里插入图片描述

就比如常见的打jar包操作,点击package就能完成项目的打包操作
在这里插入图片描述

1.4.2 依赖管理

依赖配置
使用Maven后,我我们不再手动添加jar包,而是通过pom.xml文件的配置获取jar包,这里的jar包实际上就是依赖
就比如使用javaFx,我们需要手动将javaFX的包下载下来,添加到项目里面
在这里插入图片描述

但是如果使用Maven,我们只需要在pom.xml中引入javaFx的依赖即可

<dependencies><!--里面添加项目的依赖坐标,可以是多个--></dependencies>

如果要添加javaFx依赖,那就是

<dependencies><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>17.0.11</version></dependency><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-graphics --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-graphics</artifactId><version>17.0.11</version></dependency><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-base --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-base</artifactId><version>17.0.11</version></dependency><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-fxml</artifactId><version>17.0.11</version></dependency><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-swing --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-swing</artifactId><version>17.0.11</version></dependency><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-web --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-web</artifactId><version>17.0.11</version></dependency><!-- https://mvnrepository.com/artifact/org.openjfx/javafx-media --><dependency><groupId>org.openjfx</groupId><artifactId>javafx-media</artifactId><version>17.0.11</version></dependency>
</dependencies>

注意:对pow文件的任意改动都要点击刷新按钮,特别是引入新的jar包
在这里插入图片描述

此时就能看到新加入的jar包
在这里插入图片描述

依赖传递
在导入某些jar包的时候,可能某些jar包同时也引用了其他的jar包,那么就需要将所有的jar包都复制到项目底下
如果我们不使用Maven,那么就需要知道每个库都依赖哪些库,以及这些库之间的关系是什么样的,就比较复杂

但是如果使用Maven,就可以避免管理依赖之间的关系,只需要在pom文件中直接定义依赖即可,由于maven的依赖具有传递性,就会自动将这个依赖所依赖的其他jar包一起导入
在这里插入图片描述
如图所示,项目A通过Maven引入jarA时,就会自动引入jarB和jarC
此时jarA和项目B就是项目A的直接依赖
jarB和jarC是间接依赖

依赖排除
如上图所示,如果项目A不需要jarB,也可以通过排除依赖的方式来实现
排除依赖即主动断开依赖(被排除的资源无需指定版本)

<dependencies><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>
</dependencies>

我们也可以通过插件更方便的解决这类问题
在这里插入图片描述

在这里插入图片描述

在这个页面就可以直接排除依赖
在这里插入图片描述

依赖调解
当项⽬中的依赖存在依赖冲突时
Maven会采⽤最短路径优先的原则去选择依赖

1.5Maven仓库

前面讲过,使用maven,我们只需要在pom文件里面,通过短短几行代码就能将依赖的jar包导进项目里面,那么是怎么做到的呢?

    <dependency><groupId>org.openjfx</groupId><artifactId>javafx-controls</artifactId><version>17.0.11</version></dependency>

这几行代码就称为"坐标",是唯一的

实际上在Maven里,就是通过groupId,artifactId,version的配置,来唯一识别一个jar包,这三者缺一不可
当我们在pom⽂件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库⾥寻找Jar包, 并把他 下载下来, 添加到项⽬中. 这个Jar包下载的地⽅就称为仓库.

Maven仓库分为两大类:本地仓库和远程仓库
1.5.1 本地仓库

是自己计算机上对应的一个目录,首先会查找本地仓库里面是否有对应的jar包
当项目中引入对应的依赖之后,首先会查找本地仓库里面是否有让对应的jar包
如果有的话就直接引用,没有的话则去中央仓库下载对应的jar包到本地仓库

在这里插入图片描述

本地仓库地址可以通过Maven配置查看
在这里插入图片描述

1.5.2 中央仓库

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

1.5.3 私有服务器(私服)

私服: ⼀般由公司团队搭建的私有仓库.
私服属于某个公司,或者某个部⻔, 往往需要⼀定权限.
有了私服之后, Maven依赖下载的顺序就发生了变化

在这里插入图片描述

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

1.6Maven设置国内源

因为中央仓库在国外,因此访问下载起来会比较慢,因此我们设置国内源
修改Maven的配置文件在本文资源直接下载即可

在这里插入图片描述
将此文件覆盖在此路径

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码

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

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

相关文章

[pytorch]常用函数(自用)

一、公共部分 1、torch.linespace 返回一维张量&#xff0c;在start和end之间&#xff08;包括start也包括end&#xff09;的均匀间隔的steps个点&#xff0c;长度为steps。 print(torch.linspace(1,10,3)) #输出tensor([ 1.0000, 5.5000, 10.0000]) print(torch.linspace…

文本分类--NLP-AI(八)

文本分类任务 任务简介1.字符数值化方式1方式2 2.池化&#xff08;pooling&#xff09;3.全连接层4.归一化函数&#xff08;Sigmoid&#xff09;5.总结 从任务抽象新的技术点Embedding层池化层 任务简介 任务介绍&#xff1a; 字符串分类&#xff0c;根据一句话的含妈量&#…

伊利25届校招24年社招网申入职北森测评题库全攻略!一文通!

伊利校招社招网申测评全攻略&#x1f680; 亲爱的求职小伙伴们&#xff0c;今天我要分享一份伊利校招社招网申测评的全攻略&#xff0c;希望能助你们一臂之力&#xff01; 测评概览 伊利的网申测评分为六个部分&#xff0c;总共约60分钟的答题时间&#xff0c;涵盖了言语逻辑、…

【微信小程序开发】如何定义公共的js函数,其它页面可以调用

在微信小程序开发中&#xff0c;可以通过以下步骤定义和使用公共的 JS 函数&#xff0c;使得其它页面可以调用&#xff1a; 1. 创建一个公共的 JS 文件&#xff1a;在项目的 utils 目录下创建一个 JS 文件&#xff0c;例如 utils/util.js。 2. 定义公共函数&#xff1a;在 uti…

在word中删除endnote参考文献之间的空行

如图&#xff0c;在References中&#xff0c;每个文献之间都有空行。不建议手动删除。打开Endnote。 打开style manager 删除layout中的换行符。保存&#xff0c;在word中更新参考文献即可。

Python和C++全球导航卫星系统和机器人姿态触觉感知二分图算法

&#x1f3af;要点 &#x1f3af;马尔可夫随机场网格推理学习 | &#x1f3af;二维伊辛模型四连网格模型推理 | &#x1f3af;统计物理学模型扰动与最大乘积二值反卷积 | &#x1f3af;受限玻尔兹曼机扰动和最大乘积采样 | &#x1f3af;视觉概率生成模型测试图像 &#x1f3…

从课本上面开始学习的51单片机究竟有什么特点,在现在的市场上还有应用吗?

引言 51单片机&#xff0c;作为一种经典的微控制器&#xff0c;被广泛应用于各种嵌入式系统中。尽管如今ARM架构的高性能低成本单片机在市场上占据主导地位&#xff0c;但51单片机凭借其独特的优势依然在某些领域保持着应用价值。本文将深入探讨51单片机的特点、架构、应用以及…

数学建模·模糊评价法

模糊评价法 一种解决评价问题或者得出最佳方案的方法 主观性仍比较强 具体定义 三集&#xff1a;因素集&#xff0c;评语集和权重集&#xff0c;通过模拟矩阵的处理得到最合理的评语 具体步骤 因素集 因素集的确定不难&#xff0c;难在对分级评价时&#xff0c;对因素集的分级…

LeetCode --- 134双周赛

题目 3206. 交替组 I 3207. 与敌人战斗后的最大分数 3208. 交替组 II 3209. 子数组按位与值为 K 的数目 一、交替组 I & II 题目中问环形数组中交替组的长度为3的子数组个数&#xff0c;主要的问题在于它是环形的&#xff0c;我们要考虑首尾相接的情况&#xff0c;如何…

leetcode 404. 左叶子之和

给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24示例 2: 输入: root [1] 输出: 0提示: 节点…

Linux 下使用Docker安装redis

redis&#xff1a; 是一个高性能的&#xff0c;键值对的&#xff0c;将数据存储到内存中的非关系型数据库&#xff08;nosql数据库 not only sql&#xff09; 高性能&#xff1a;数据存在内存中&#xff0c;直接访问内存 键值对&#xff1a;新闻id&#xff08;键&#xff09…

c++数据结构--构造无向图(算法6.1),深度和广度遍历

实验内容&#xff1a; 实现教材算法6.2利用邻接矩阵构造无向图的算法&#xff0c;提供从邻接矩阵获得邻接表的功能&#xff0c;在此基础上进行深度优先遍历和广度优先遍历。 实验步骤&#xff1a; &#xff08;1&#xff09;按照实验要求编写代码&#xff0c;构造无向图。 …

浅谈数学模型在UGC/AIGC游戏数值调参中的应用(AI智能体)

浅谈数学模型在UGC/AIGC游戏数值调参中的应用 ygluu 卢益贵 关键词&#xff1a;UGC、AIGC、AI智能体、大模型、数学模型、游戏数值调参、游戏策划 一、前言 在策划大大群提出《游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发》讨论之后就已完…

Hi3861 OpenHarmony嵌入式应用入门--HTTPD

httpd 是 Apache HTTP Server 的守护进程名称&#xff0c;Apache HTTP Server 是一种广泛使用的开源网页服务器软件。 本项目是从LwIP中抽取的HTTP服务器代码&#xff1b; Hi3861 SDK中已经包含了一份预编译的lwip&#xff0c;但没有开启HTTP服务器功能&#xff08;静态库无法…

NiFi1.25版本HTTPS模式下RestAPI使用入门

Apache NiFi 是一个强大的数据流处理工具&#xff0c;通过其 REST API&#xff0c;用户可以远程管理和控制数据流处理器。本文将介绍如何使用 NiFi 1.25 版本HTTPS 模式下Rest API&#xff0c;包括获取 token、获取组件信息、启动和停止组件、以及更改组件的调度频率等操作。 …

Linux vim文本编辑器

Vim&#xff08;Vi IMproved&#xff09;是一个高度可配置的文本编辑器&#xff0c;它是Vi编辑器的增强版本&#xff0c;广泛用于程序开发和系统管理。Vim不仅保留了Vi的所有功能&#xff0c;还增加了许多新特性&#xff0c;使其更加强大和灵活。 Vim操作模式 普通模式&#xf…

科普文:微服务之Apollo配置中心

1. 基本概念 由于Apollo 概念比较多&#xff0c;刚开始使用比较复杂&#xff0c;最好先过一遍概念再动手实践尝试使用。 1.1、背景 随着程序功能的日益复杂&#xff0c;程序的配置日益增多&#xff0c;各种功能的开关、参数的配置、服务器的地址……对程序配置的期望值也越来…

026-GeoGebra中级篇-曲线(2)_极坐标曲线、参数化曲面、分段函数曲线、分形曲线、复数平面上的曲线、随机曲线、非线性动力系统的轨迹

除了参数曲线、隐式曲线和显式曲线之外&#xff0c;还有其他类型的曲线表示方法。本篇主要概述一下极坐标曲线、参数化曲面、分段函数曲线、分形曲线、复数平面上的曲线、随机曲线、和非线性动力系统的轨迹&#xff0c;可能没有那么深&#xff0c;可以先了解下。 目录 1. 极坐…

「网络通信」HTTP 协议

HTTP &#x1f349;简介&#x1f349;抓包工具&#x1f349;报文结构&#x1f34c;请求&#x1f34c;响应&#x1f34c;URL&#x1f95d;URL encode &#x1f34c;方法&#x1f34c;报文字段&#x1f95d;Host&#x1f95d;Content-Length & Content-Type&#x1f95d;User…

运动控制问题

第一类运动控制问题是指被控制对象的空间位置或轨迹运动发生改变的运动控制系统的控制问题。这类运动控制问题在理论上完全遵循牛顿力学定律和运动学原则。 1、运动控制问题 第1类运动控制的核心是研究被控对象的运动轨迹 、分析运动路径、运动速度、加速度与时间的关系,常用…