您的位置:首页 > 文旅 > 旅游 > 什么是Maven以及如何配置Maven

什么是Maven以及如何配置Maven

2024/10/7 10:25:25 来源:https://blog.csdn.net/m0_60963435/article/details/140426103  浏览:    关键词:什么是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

🫵 今天记得敲代码

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com