Maven

目录

一、什么是Maven

二、为什么要学Maven

三、创建一个Maven项目

[四、Maven 核心功能](#四、Maven 核心功能)

1、项目构建

2、依赖管理

(1)依赖配置

(2)依赖传递

(3)依赖排除

[3、Maven Help 插件](#3、Maven Help 插件)

[五、Maven 仓库](#五、Maven 仓库)

(1)仓库的介绍

(2)本地仓库

(3)中央仓库

[如何查找 Jar 的坐标?](#如何查找 Jar 的坐标?)

(4)私有服务器

[六、Maven 设置国内源](#六、Maven 设置国内源)

1、配置当前项目的setting:

配置国内源

2、设置新项目的setting:


学习这一部分要先检查IDEA版本,社区办要求 2021.1~2022.1.4,专业版则无要求。如果个人电脑不是专业版,版本又不在这个范围,需要卸载重新安装。

IDEA卸载参考:IDEA卸载和删除注册表_idea清理注册表-CSDN博客(一定要删除注册表)

一、什么是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 (Project Object Model,项目对象模型)的概念,Maven 可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

大白话:

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


二、为什么要学Maven

一句话:简单、方便,能提高我们的开发效率,减少我们的开发BUG

Maven提供的功能非常多,下面的体现主要是以下两个方面:1、项目构建 2、管理依赖。


三、创建一个Maven项目

IDEA本身已经集成了Maven,不需要我们另外单独安装,可以在IDEA上直接用,不用安装。

下面是用专业版2023.2演示:打开IDEA -> file -> New Project,如图:

点击create,就创建好了一个Maven项目,还会自动生成一个pom.xml文件,如图:


四、Maven 核心功能

接下来,我们结合项目,介绍 Maven 在项目开发中的作用。主要体现在:1、项目构建 2、管理依赖。

1、项目构建

Maven 提供了标准的、跨平台(Linux,Windows,MacOS等)的自动化项目构建方式。

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

下面写一些简单的Java代码:

java 复制代码
public class Test {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println("hello world");
        }
    }
}

如图:

左键双击package,就可以把我们刚才写的代码,打成 jar 包,如图:

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

jar包 和 war包 都是一种压缩文件。

jar包 就是把开发人员已经写好的一些代码进行打包。打好的 jar包 就可以引入到其他项目中,也可以直接使用这些 jar包 中的类和属性。另外也可以打成可执行的 jar包,这样的包就可以通过 java -jar 命令来执行。

war包 可以理解为是一个web项目,里面是项目的所有东西,通常用于网站。

2、依赖管理

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

(1)依赖配置

依赖 :指当前项目运行所需要的 jar包。

比如之前学习 JDBC 时,我们需要手动下载 mysql-connector-java 的包,并且要手动添加到项目中。而使用Maven,只需要在 pom.xml 中引入 mysql-connector-java 的依赖就好了

格式

XML 复制代码
    <dependencies>
        <!--⾥⾯放置项⽬的依赖坐标, 可为多个 -->
    </dependencies>

<dependencies>标签是.xml文件的,格式有点像html的标签;依赖可以理解为就是经纬度,给你经纬度,你就可以在找到相应的目标位置。

1、在pom.xml文件内写入下面代码

XML 复制代码
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
    </dependencies>

2、点击刷新按钮,引入新加入的依赖 jar包。(后续有添加新的 jar包,或者修改 jar包 版本,都需要通过上述方式在项目中添加依赖)

刷新按钮的点击,有下面两种方式:

3、刷新完成后,在左边这里的目录下就有对应的jar包了,如图:

(2)依赖传递

早期没有使用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是间接依赖

直接依赖 :在当前项目中 通过依赖配置建立的依赖关系。

间接依赖 :被依赖的资源 如果依赖其他资源,当前项目间接依赖其他资源。

(3)依赖排除

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

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

比如我要寄件,在网上下单了,默认会有一个服务:快递小哥会上门取件,帮我寄出去;但这时我刚好要出门,也顺路经过站点,也可以选择自己送过去。

代码示例:

XML 复制代码
<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>

Maven还有一些功能,是依赖调解,可选依赖等。

当项目中的依赖存在依赖冲突,例如存在这样的依赖:

A->B->C->X(1.0)

A->D->X(2.0)

Maven会采用最短路径优先的原则 去选择依赖,这里2的依赖路径更短,所以会选择X(2.0),当然也可以指定某个依赖的般般,指定X(1.0)。

3、Maven Help 插件

安装插件过程 :File -> Setting -> Plugins -> 搜索 "Maven Help" -> 找到对应插件,点击 Install 安装即可,按照后要重启 IDEA,才能生效。如下图:

点击 Install 后,下载完后就如下图:

点击 Restart IDE,重启IDEA。

安装完后,打开 pom.xml 文件,就可以看到 Jar包 之间的依赖关系,如图:

也可以右键排除掉一些依赖,如图:

点击后,就会没了,如图:

五、Maven 仓库

(1)仓库的介绍

我们通过短短几行代码,就可以把依赖 jar包 放在项目里,具体是如何做的呢?

java 复制代码
    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.0.33</version>
        </dependency>
    </dependencies>

这个代码,我们称之为 "坐标",也就是唯一的。

在Maven中,根据 groupId、artifactId、version 来配置,通过这些标签,识别出唯一的一个jar包,这三个标签,缺一不可。

当我们在 pom 文件中配置完依赖之后,点击刷新,Maven 就会根据坐标的配置,去仓库里寻找 jar包,并把他下载下来,添加到项目中。这个 jar包 下载的地方,就称为仓库。

仓库 :用于存储资源,管理各种 jar包。如图:

Maven仓库 的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包、插件等)。

如图:

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

(2)本地仓库

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

当项目中引入对应依赖 jar包 后,首先会查找本地仓库中是否有对应的 jar包

------如果有,则在项目中直接引用。

------如果没有,则去中央仓库中下载对应的 jar包 到本地仓库。

如图:

本地仓库地址可以通过 Maven 配置查看:File -> Settings,如图:

User settings file :Maven的配置文件。

Local repository :Maven的本地仓库地址。

如果这里默认的目录上有中文路径,则要修改一下路径,或者想把本地仓库地址路径换一下,可以进行修改,下面是修改方法:

找到原来地址仓库的 .m文件,全部复制下来

把它粘贴到你的目的路径,如图:

现在修改IDEA的仓库地址目录和Maven的配置文件(在settings上),如图:

还要修改新的项目的仓库地址和配置文件,位置在如图:

步骤和上面的一样,如图:

经过上面这些步骤,就可以修改本地仓库路径了(这里我把国内源也换了一下,下面会有介绍)。我们查看本地仓库目录,可以看到该目录下有许多 .jar 文件。(最开始是空的,随着Maven的使用,该仓库下文件会越来越多)

(3)中央仓库

中央仓库 :Maven 软件中内置一个远程仓库地址,也就是中央仓库的地址,服务于整个互联网。由 Maven 团队维护,这是全球唯一的。我们也可以把自己写好的 Jar包 上传到中央仓库(需具备一定的要求),也可以从中央仓库下载 Jar包。

仓库地址:https://repo1.maven.org/maven2/

查询Jar包在仓库的坐标(位置):https://mvnrepository.com/

如何查找 Jar 的坐标?

1、访问 https://mvnrepository.com/

2、进行查找,比如要找的是 MySQL。

3、选择要添加的 jar包 版本

4、查看 jar包 对应的坐标

框出来的文本就是jar包对应的坐标,复制框出来的文本,粘贴进 IDEA 的 pom.xml 文件中。

(4)私有服务器

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

当有了私服之后,Maven依赖下载顺序就会发生变化,如图:

当 pom.xml 写入一个依赖时,是先到本地仓库查找

1、如果本地仓库有,就直接从本地仓库拿。

2、如果本地仓库没有,就到私服中查找,私服中有,就从私服上下载这个依赖到本地仓库中。

3、如果私服没有,就会在中央仓库上查找,中央仓库有,私服就会从中央仓库中下载下来,然后再传给本地仓库。

4、如果中央仓库没有,也会从中央仓库下载,但中央仓库没有这个资源,就会报异常。

因为私服是很多人在使用的,所以只需要第一个使用者下载一次,就可以了。


六、Maven 设置国内源

和上面设置本地仓库目录操作一样

1、配置当前项目的setting:

file -> Settings

原始的Maven路径,不同电脑路径不同,可以在这上面看到的,选择新的路径不能有中文,操作和上面介绍修改本地仓库路径一样。

配置国内源

Maven仓库默认在国外:https://repo1.maven.org/maven2/ ,国内使用时会比较慢,我们可以更换为阿里云的仓库,也可以是别的仓库,参考:Maven 镜像地址大全 - 知乎 (zhihu.com)

打开setting.xml,在 mirrors节点上,添加内容如下:

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

如果上述地址不存在settings文件,则可以用这个:setting.xml (泡泡姐的gitee仓库)

2、设置新项目的setting:

file -> New Projects Setup -> Settings for New Projects

点击完这里后,操作跟上面的操作一样


都看到这了,点个赞再走吧,谢谢谢谢谢

相关推荐
aloha_7896 分钟前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java36 分钟前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~40 分钟前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
程序媛小果1 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡2 小时前
java后端请求想接收多个对象入参的数据
java·开发语言
java1234_小锋2 小时前
使用 RabbitMQ 有什么好处?
java·开发语言
TangKenny2 小时前
计算网络信号
java·算法·华为
肘击鸣的百k路2 小时前
Java 代理模式详解
java·开发语言·代理模式
城南vision2 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wyh要好好学习2 小时前
SpringMVC快速上手
java·spring