Maven

发布于:2025-07-08 ⋅ 阅读:(11) ⋅ 点赞:(0)

环境准备:

需要检查Idea版本(社区版)是否在下面的范围内:

社区版:2021.1 ~ 2022.1.4

专业版:无要求

如果安装的idea不在这个范围内,需要卸载重新安装

卸载参考(一定要删除注册表):彻底卸载并重装IntelliJ IDEA指南-CSDN博客

1、Maven

1.1 什么是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.xml文件的配置获取jar包,而不用手动地添加jar包。

1.2 为什么要学Maven

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

Maven提供的功能非常多,在后续的学习中体现在以下两个方面:

1、项目构建

2、管理依赖 

1.3 创建Maven项目

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

新建项目,将构建系统改为Maven,创建即可~

如图,就创建好了一个Maven项目: 

1.4 Maven的核心功能

我们刚才提到过Maven在项目开发中的作用:

1、项目构建 

2、管理依赖

1.4.1 项目构建

Maven提供了标准的,跨平台的自动化项目构建方式。

当我们开发了一个项目之后,代码需要经过编译、测试、打包、发布等流程,每次代码的修改,都需要经过这些流程,如果代码反复调试修改,这个流程就需要反复进行,会特别麻烦,而Maven给我们提供了简单的命令来完成项目的构建。

比如,点击package就可以完成项目的打包操作: 

打包就是把所有的class文件,全部放在一起,打成jar包或者war包。

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

1.4.2依赖管理

上面说完了Maven是一个项目管理工具,提供pom.xml文件的配置获取jar包,而不用手动去添加jar包,获取到的jar包,其实就是依赖。

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

 比如在前面学习JDBC时,我们需要手动下载mysql-connector-java的包,并且添加到项目中。

如果使用Maven,我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了。

1、使用<dependencies>打包依赖
<dependencies>
 <!--⾥⾯放置项⽬的依赖坐标, 可为多个 -->
</dependencies>
2、在pom文件的<dependencies>标签内,添加依赖坐标
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
</dependencies>

groupId:代表项目所属组织活分组,通常使用反向域名的形式。

artifactId:表示具体的项目或者模块名称。

version:指定该artifact的版本号。 

3、点击刷新按钮,引入新加入的依赖jar包

刷新完之后就可以在项目中看到新加入的jar包:

 依赖传递 

 细心的同学可能就发现了:怎么上面还有一个protobuf的包呢?

这是因为依赖传递。

早期我们没有使用maven时,向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下。比如 A 依赖B, B依赖C, 那么 A项目引入B 的同时, 也需要引入C, 如果我们手动管理这个依赖, 这个过程 就会比较麻烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的。

但使用maven的话, 就可以避免管理所需依赖的关系。我们只需要在pom文件中, 定义直接依赖就可以了, 由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入。

如上图,项目A通过Maven引入JarA时,会自动引入JarB和JarC。Jar和项目B就是项目A的直接依赖。JarB,JarC是间接依赖。 

依赖排除

当前阶段我们需要依赖的库并不多,但随着项目越来越复杂,库之间1的依赖关系也会变得越来越复杂。如上图,如果项目A不需要JarB,也可以通过排除依赖的方式来实现。

排除依赖:

指主动断开依赖的资源。(被排除的资源无需指定版本)

如下代码就是排除了spring framework的依赖。(即不使用spring framework的jar包了) 

<!--排除依赖-->
 <exclusions>
 <exclusion>
 <artifactId>spring-jcl</artifactId>
 <groupId>org.springframework</groupId>
 </exclusion>
 </exclusions>
</dependency>

 1.4.3 Maven Help插件

当项目比较复杂时,我们就会有Jar包冲突问题,这时候就需要取解决依赖冲突。解决冲突之前,需要先找到冲突,我们可以使用MavenHelp插件来观察包和包之间的依赖关系。

在项目创建页面,点击插件,搜索Maven Help,安装即可:

安装之后打开pom文件,就可以看到jar包之间的依赖关系。 还可以右键排除掉一些依赖。

1.5 Maven仓库

我们通过刚才短短几行代码,就把依赖的jar包放在了项目里,具体是怎么做到的呢?

<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>8.0.30</version>
</dependency>

这个代码我们称之为“坐标”,也就是唯一的(根据我们刚才所讲的groupId、artifactId和version的配置来识别),当我们在pom文件中配置完依赖之后,点击刷新,Maven会根据坐标的配置,去仓库里寻找Jar包,并把它下载下来,添加到项目中。这个Jar包下载的地方就称为仓库

Maven仓库的本质就是⼀个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包, 插件等)(可以理解为:菜鸟驿站)。

Maven仓库可以分为两大类:本地仓库远程仓库。其中远程仓库又分为中央仓库私服和其他公共库。

1.5.1 本地仓库

本地仓库:自己计算机上的一个目录(用来存储jar包)

当项目引入了对应依赖的jar包之后,首先会在本地仓库中是否有对应的jar包:如果有,就会在项目中直接引用,如果没有才会去中央仓库下载对应的Jar包。

本地仓库地址可以通过Maven配置查看:

该仓库的目录最开始是空的,随着Maven的使用,该仓库下的文件会越来越多。 

1.5.2 中央仓库

中央仓库:maven软件中内置的一个远程仓库地址,服务于整个互联网。由Maven团队维护,全球唯一。(由于该仓库在国外,访问速度较慢)。

仓库地址:Central Repository: (maven.org)

如果觉得查找jar包麻烦,我们也可以通过下面的网址来查找jar包的坐标:Maven 存储库:搜索/浏览/探索 (mvnrepository.com) 

例如:查找mysql:

选择要添加的Jar包版本(这里最好选择次新的、使用人数多的、无漏洞的):

查看Jar包对应坐标:

1.5.3 私有服务器(私服)

私服:一般由公司团队搭建的私有仓库。属于某个公司,或者某个部门,往往需要一定的权限。

有了私服之后,Maven依赖下载的顺序又发生了变化。

当Maven需要下载资源的时候:

1、先从本地仓库获取,本地仓库存在,则直接返回。

2、如果本地仓库没有,就从私服找,找到了就返回。

3、如果私服上也不存在该资源,则从中央仓库下载,中央仓库不存在,就报错了。

4、如果中央仓库中存在,就先缓存到私服上之后,再缓存到本地仓库里,再为Maven的下载请求服务。(由于私服是很多人使用的,所以只需要第一个使用者下载一次就可以了,因此进入公司就可以找前辈要公司私服的权限)。

1.6 Maven设置国内源

因为中央仓库在国外,所以下载起来比较慢,所以咱们选择借助国内一些公开的远程仓库来下载资源(如:阿里云、华为云……)。

1.6.1 配置设置文件和本地仓库

1、先在D盘新建一个maven文件夹.

2、在C盘中查找本机Maven仓库的地址 (一般为C:/用户./UserName./m2),将它复制粘贴到我们刚才的Maven文件夹中。

3、 配置Setting文件,如果没有可以去博主的码云中复制一份,然后粘贴到自己的文档编辑器中,保存到刚才的Maven即可。

Setting文件地址:setting.xml · 寻梦缘/Maven配置文档 - 码云 - 开源中国 (gitee.com)

4、在idea中配置本地仓库和setting文件 (选择我们刚才D盘中Maven文件夹的路径即可)

 


网站公告

今日签到

点亮在社区的每一天
去签到