Maven

本文介绍了Maven的基本概念,为何学习Maven,以及如何在IDEA中创建和管理Maven项目。详细讲解了Maven的核心功能,包括项目构建、依赖配置、传递和排除,以及Maven仓库的结构和国内源设置。
摘要由CSDN通过智能技术生成

目录

一、什么是Maven

二、为什么要学Maven

三、创建一个Maven项目

四、Maven 核心功能

1、项目构建

2、依赖管理

(1)依赖配置

(2)依赖传递

(3)依赖排除

3、Maven Help 插件

五、Maven 仓库

(1)仓库的介绍

(2)本地仓库

(3)中央仓库

如何查找 Jar 的坐标?

(4)私有服务器

六、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代码:

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 的依赖就好了

        格式

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

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

        1、在pom.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,也可以通过排除依赖的方式来实现

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

        代码示例:

<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包 放在项目里,具体是如何做的呢?

    <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 fileMaven的配置文件

Local repositoryMaven的本地仓库地址

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

        找到原来地址仓库的 .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节点上,添加内容如下:

<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

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


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

  • 50
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tao滔不绝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值