Maven是?个项?管理?具。基于POM(Project Object Model,项?对象模型)的概念,Maven可以通过??段描述信息来管理项?的构建,报告和?档的项?管理?具软件。
??话:Maven是?个项?管理?具,通过pom.xml?件的配置获取jar包,?不??动去添加jar包
为了简单,?便,提?我们的开发效率,减少我们的开发Bug.
关于Maven项目的创建可以参考博主写的
如果Maven jar包下载失败,可以参考博主写的
【JavaEE进阶】 Maven jar 包下载失败问题的解决方法
Maven提供的功能?常多,Maven在项?开发中的作?.
主要体现在两个??:
项?构建
管理依赖
Maven提供了标准的,跨平台(Linux,Windows,MacOS等)的?动化项?构建?式,当我们开发了?个项?之后,代码需要经过编译,测试,打包,发布等流程,每次代码的修改,都需要经过这些流程,如果代码反复调试修改,这个流程就需要反复进?,就显得特别?烦,?Maven给我们提供了?套简单的命令来完成项?的构建.
?如,点击package,就可以完成项?的打包操作
打包就是把所有的class?件,全部放在?起,打成jar包或者war包
jar包和war包都是?种压缩?件
jar包就是把开发?员已经写好的?些代码进?打包.打好的jar包就可以引?到其他项?中,也可以直接使?这些jar包中的类和属性.另外也可以打成可执?war包,这样的包就可以通过java-war命令来执?war包可以理解为是?个web项?,??是项?的所有东西,通常?于?站
?说到,Maven是?个项?管理?具,通过pom.xml?件的配置获取jar包,?不??动去添加jar包获取的jar包,其实就是依赖.
pom.xml就是maven的配置?件,?以描述项?的各种信息
而我们一般是需要对pom.xml中引?相应的依赖。
?如博主在前面讲JDBC编程时,我们需要?动下载mysql-connector-java的包.并且添加到项?中.
如果使?Maven,我们只需要在pom.xml中引?mysql-connector-java的依赖就可以了
<dependencies>
<!--??放置项?的依赖坐标, 可为多个 -->
</dependencies>
在pom?件 标签内,添加依赖坐标
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
点击刷新按钮,引?新加?的依赖jar包
后续有添加新的jar包,或者修改jar包版本,都需要通过该?式在项?中添加依赖.
早期我们没有使?maven时,向项?中添加依赖的jar包,需要把所有的jar包都复制到项??程下.?如A依赖B,B依赖C,那么A项?引?B的同时,也需要引?C,如果我们?动管理这个依赖,这个过程就会?较?烦,我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的
?如我们要吃?锅,需要有锅,有调料,有?材,以及确认什么样的锅,什么样的?材.
?如去医院看病,需要带上以往的病历,检查结果,处?等,并且要确认带的资料是正确的,如果?期错了,或者患者错了,带少了,就需要回去重新拿
但使?maven的话,就可以避免管理所需依赖的关系。我们只需要在pom?件中,定义直接依赖就可以了,由于maven的依赖具有传递性,所以会?动把所依赖的其他jar包也?起导?
?如吃?锅,现在我们可以点?个海底捞外卖,直接就把所有?材都送过来了,包括什么锅,配什么菜.?如去医院看病,借助"互联?",实现了信息共享,只需要带上?份证,以往的病历和检查结果就都可以看到了
如上图,项?A通过Maven引?Jar A时,会?动引?Jar B 和Jar C.
Jar A 和项?B就是项?A的直接依赖.
Jar B, Jar C是间接依赖.
排除依赖: 指主动断开依赖的资源。(被排除的资源?需指定版本)
当前阶段我们需要依赖的库并不多,但随着项?的越来越复杂,库之间的依赖关系也会变得越来越复杂.
?如,我下了?个快递单?,默认会有?个服务,就是快递?哥会上?取件,但是我刚好要出?,?且顺路经过站点,也可以选择??送过去
如上面所讲, 如果项?A不需要Jar B,也可以通过排除依赖的?式来实现.
当项??较复杂时,我们就会有Jar包冲突的问题,这时候就需要去解决依赖冲突.解决冲突之前,需要先找到冲突,我们可以使?Maven Help插件来观察包和包之间的依赖关系
安装插件:File -> Settings ->Plugins -> 搜索Maven Help -> 找到对应插件, 点击Install 安装即可, 安装后需要重启下idea,才能?效
我们通过短短??代码,就把依赖jar包放在了项??,具体是如何做的呢?
比如我们上面导入的mysql的jar包
这个代码,我们称之为"坐标",也就是唯?的.
在Maven中,根据groupId、artifactId、version的配置,来唯?识别?个jar包,缺?不可.
当我们在pom?件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库?寻找Jar包,并把他下载下来,添加到项?中.这个Jar包下载的地?就称为仓库.仓库:?于存储资源,管理各种jar包
Maven仓库分为两?类:本地仓库和远程仓库.其中远程仓库?分为中央仓库,私服和其他公共库
本地仓库:??计算机上的?个?录(?来存储jar包)
当项?中引?对应依赖jar包后,?先会查找本地仓库中是否有对应的jar包
? 如果有,则在项?直接引?
? 如果没有,则去中央仓库中下载对应的jar包到本地仓库
本地仓库地址可以通过Maven配置查看:
File -> Settings
中央仓库:maven 软件中内置?个远程仓库地址,就是中央仓库,服务于整个互联?.由Maven团队维护,全球唯?.
仓库地址:https://repo1.maven.org/maven2/
可以通过https://mvnrepository.com这个?站来查询并下载
那我们如何查找我们想要的jar包呢?可以分为以下三步
访问https://mvnrepository.com/
进?查找,?如mysql
私有服务器,也称为私服
私服:?般由公司团队搭建的私有仓库.
私服属于某个公司,或者某个部?,往往需要?定权限.
有了私服之后,Maven依赖下载的顺序?发?了变化
当Maven需要下载资源的时候
关于《【JavaEE进阶】 关于Maven》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!