Maven 快速上手

目录

[1. Maven简介](#1. Maven简介)

[2. Maven的功能](#2. Maven的功能)

[(1) 项目构建](#(1) 项目构建)

[(2) 依赖管理](#(2) 依赖管理)

[项目依赖]:

[依赖传递]:

[依赖排除]:

[3. Maven Helper 插件](#3. Maven Helper 插件)

[(1) 概述](#(1) 概述)

(2)安装

[4. Maven 仓库](#4. Maven 仓库)

[(1) 仓库](#(1) 仓库)

[(2) 本地仓库和远程仓库](#(2) 本地仓库和远程仓库)

[本地仓库]:

[中央仓库]:

[私服]:

[5. 配置Maven国内源](#5. 配置Maven国内源)


1. Maven简介

Maven 是一个用于项目管理和构建自动化工具, 主要用于 Java 项目. 它可以帮助开发者管理项目的构建, 报告和文档.

简单来讲, Maven是一个项目管理工具, 通过pom.xml的文件配置获取jar包, 而不用手动获取.

那我们进行Java开发为什么要学习Maven呢? --> 提高开发效率.

[补充]:

(1) 什么是jar包:

jar包 (Java Archive ("Java存档")) 是一种用于存储Java文件和相关配置文件 的文件格式, 它本质上是一种压缩文件, 以.jar为扩展名. jar包的设计目的是方便将Java程序进行打包, 使得打包后的Java代码更易于管理和部署.

(2) 什么是pom文件:

pom.xml文件是Maven项目的核心文件, 全称为Project Object Model (项目对象模型). 它是一个 XML 格式的文件, 用于++定义 Maven 项目的基本信息, 构建配置, 依赖关系以及项目所使用的插件等重要信息.++ Maven 会根据pom.xml文件中的信息来执行各种项目管理和构建任务.

2. Maven的功能

(1) 项目构建

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

当我们开发了一个项目之后, 代码需要经过编译, 测试, 打包, 发布等流程. 每次代码修改之后, 都需要再次经历这些流程. 如果代码反复调试修改, 这个流程就要反复地进行, 十分不方便.

而Maven就给我们提供了⼀套简单的命令来完成.

比如, 我们点击package, 就可以自动完成项目的打包工作:

此时我们查看target文件夹, 其目录下就会多出一个jar包. 这个jar包就是我们刚刚通过package打包创建的.

[补充]:

打包, jar包和war包 是什么?

打包 就是把所有的class文件, 全部放到一起, 打成jar包或者war包 . jar包和war包都是压缩文件的一种.

  • jar包就是把开发人员已经写好的代码进行打包. 打好的jar包可以直接引入到其他项目中, 也可以直接使用这些jar包中的类和属性. 也可以打成可执行jar包, 这样的包就可以通过java -jar命令来执行.
  • war包可以理解为是⼀个web项目, 里面包含项目中的所有东西, 通常适用于网站的开发.

(2) 依赖管理

[项目依赖]:

什么是依赖? --> 上面说道, Maven是项目管理工具, 通过pom.xml文件中的配置来获取当前项目运行所需要的jar包. 这里 当前项目运行所需要的jar包 就叫做 依赖.

pom.xml 就是Maven的配置文件, 用来描述项目的信息, 管理项目的依赖.

依赖配置:

例如: 我们之前在学习JDBC时, 需要手动 下载 mysql-connector-java 的包并将其手动添加 至项目中. 但是如果我们使用Maven, 只需要在pom.xml中引入 mysql-connector-java 的依赖就可以了.

XML 复制代码
    <dependencies>
        <!-- 在里面添加依赖坐标-->
    </dependencies>

我们需要在pom.xml文件中的 <dependencies> 标签中添加mysql-connector-java的依赖坐标, 格式如下:

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

添加新的jar包之后, 我们需要 (点击刷新按钮) 刷新Maven 以引入新的依赖. 否则无法引入.

刷新之后, 我们就可以在 Maven -- Dependencies 中查看到我们新添加的依赖了:

[依赖传递]:

在早期不使用Maven管理依赖的jar包时, 如果某jar包还依赖于其他包, 其他包又依赖于另外的包, 那么我们就需要把所有依赖的包一起导入 到项目中, 如果手动操作 这个过程会十分麻烦.

但是如果我们使用Maven就会避免上述麻烦的产生. 因为Maven管理的依赖具有传递性 : ++在导入一个依赖时, 会将这个依赖所依赖的以及和它有传递性的jar包一起导入++ . 也就是说, 我们只需要在pom.xml文件中添加我们想要的依赖, 那么与之相关的所有依赖就会全部自动导入.

比如, 如上图, 我们在项目A中 通过Maven导入 jarA 时, 会自动导入 jarB 和 jarC.

[依赖排除]:

当前阶段我们添加的依赖并不多, 但是随着项目

越来越复杂, 依赖关系也会变得越来越复杂. 就会产生项目不需要某个已导入依赖的情况, 此时我们可以排除依赖: 即 主动断开依赖的资源.

如上图, 如果项目A不需要 jarB, 就可以通过排除依赖的方式来实现. 排除依赖使用exclusions和exclusion标签, 格式如下:

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>

3. Maven Helper 插件

(1) 概述

插件是什么 : 插件(Plugins) 就是对程序的一些特定场景, 做一些特定的扩展.

Maven Helper 插件的主要功能就是**"依赖管理"**. 包括 依赖分析, 冲突检测, 依赖排除 等功能.

(2)安装

我们可以通过: File --> Settings --> Plugins --> 搜索Maven Helper 来安装Maven Helper 插件.

安装好之后, 我们打开pom.xml文件, 会发现下面多出来一栏(Dependency Analyzer).

在这里我们就可以查看包和包之间的依赖关系, 冲突关系, 以及排除一些依赖.

4. Maven 仓库

(1) 仓库

Maven通过简单的几行代码就能一个jar包导入进项目中. 那么Maven是如何做到的呢?

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

如上述代码, 这快代码我们称之为 mysql-connector-java 包的"坐标". 我们知道, 在数学的坐标系中, 某点的坐标是唯一的. 同样地, 在Maven中, 每个jar包的坐标也是唯一的.

Maven中, jar包由 groupId, artifactId, version 三者共同决定, 缺一不可. 也就是说: 这三者共同构成了某jar包的坐标.

当我们在pom.xml文件中配置好依赖之后, 点击刷新, Maven 就会根据我们写的坐标到仓库中去寻找相应的jar包下载下来, 导入到项目中.

jar包下载的地方就叫做**"仓库"**仓库本质上就是一个目录(文件夹), 这个文件夹中存放着我们开发所需要的所有依赖.

(2) 本地仓库和远程仓库

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

[本地仓库]:

本地仓库就是我们自己的计算机上用来存储jar包的一个目录. 当我们在项目中导入一个jar包时, 会先查找本地仓库是否有这个jar包 : 如果有, 直接导入; 如果没有, 再去远程仓库中下载相应的jar包.

我们可以通过File --> Setting --> Maven --> Local respository 来查看本地仓库的地址.

打开该目录, 我们可以看到哟很多的文件. (这个目录一开始是空的, 随着Maven的使用, 文件会越来越多)

[中央仓库]:

中央仓库是Maven中内置的一个远程仓库地址. 中央仓库服务于整个互联网, 全球唯一, 由Maven团队维护.

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

我们也可以通过Maven官网来访问中央仓库 : https://mvnrepository.com/ 我们查找jar包坐标就是通过这个地址来查找.

查找jar包坐标:

点击版本号, 进去就能查看到jar包的坐标了.

[私服]:

私服 即私有服务器, 一般是由某公司或某团队搭建的仓库.

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

  • 导入某资源:

(1) 先从本地仓库获取. 如果本地仓库存在该资源, 直接导入.

(2) 如果本地仓库不存在, 再从私服获取. 如果私服存在该资源, 直接导入.

(3) 如果私服中也不存在, 再从中央仓库下载. 如果中央仓库存在该资源, 直接导入.

(4) 如果中央仓库也不存在该资源, 就会报错.

5. 配置Maven国内源

因为中央仓库在国外, 所以下载起来会比较慢, 所以我们选择借助国内一些公开的远程仓库来下载资源. 国内常见的公开远程仓库有: 阿里云, 华为云, 腾讯云 等. 参考: Maven 镜像地址大全 - 知乎.

我们以阿里云仓库为例. 打开settings.xml, 在mirrors节点中, 添加如下代码:

XML 复制代码
        <mirror>
          <id>aliyunmaven</id>
          <mirrorOf>*</mirrorOf>
          <name>阿里云公共仓库</name>
          <url>https://maven.aliyun.com/repository/public</url>
        </mirror>

这样就给当前项目的配置好国内源了.

但是别忘了也要给新项目配置哈.

好了, 完成以上操作, 我们就能流畅地使用Maven管理项目了~

相关推荐
空の鱼3 分钟前
java开发,IDEA转战VSCODE配置(mac)
java·vscode
P7进阶路1 小时前
Tomcat异常日志中文乱码怎么解决
java·tomcat·firefox
小丁爱养花2 小时前
Spring MVC:HTTP 请求的参数传递2.0
java·后端·spring
CodeClimb2 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
等一场春雨2 小时前
Java设计模式 九 桥接模式 (Bridge Pattern)
java·设计模式·桥接模式
带刺的坐椅2 小时前
[Java] Solon 框架的三大核心组件之一插件扩展体系
java·ioc·solon·plugin·aop·handler
不惑_3 小时前
深度学习 · 手撕 DeepLearning4J ,用Java实现手写数字识别 (附UI效果展示)
java·深度学习·ui
费曼乐园3 小时前
Kafka中bin目录下面kafka-run-class.sh脚本中的JAVA_HOME
java·kafka
feilieren3 小时前
SpringBoot 搭建 SSE
java·spring boot·spring
阿岳3164 小时前
Java导出通过Word模板导出docx文件并通过QQ邮箱发送
java·开发语言