前言 这篇主要写给想了解 Maven 是什么、怎么用的同学:很多教程只告诉你“把 settings.xml 改成这样、把 pom.xml 贴上去”,但不解释为什么要这么配、配了之后解决什么问题?
最终结果就是:一打开项目 pom.xml 满屏红,四处问“我 Maven 坏了”。
本文会进行最基础的介绍/扫盲,帮助快速上手Maven
适合人群:不太理解依赖和构建、刚接触Maven的同学阅读收益: Maven 到底在帮你做什么(构建 + 依赖管理)本地仓库 / 远程仓库 / 镜像分别是什么,为什么要配在 IDEA 里正确关联 Maven,避免 pom.xml 一直飘红1. 概述Maven 是一个项目构建与依赖管理工具:可以对 Java 项目进行自动化的构建和依赖, 如编译、运行、打包。
比如你要连接数据库、做 Web 接口、文件上传等,需要用到别人的框架(jar 包)。
在使用 Maven 时你不用手动去网上下载 jar、也不用到处复制粘贴到项目里:只需要在 pom.xml 里声明依赖,Maven 就会自动下载,然后项目就能引用。
2. Maven 的作用Maven 的作用可以分为三类:
项目构建:提供标准的,跨平台的自动化构建项目的方式依赖管理:方便快捷的管理项目依赖的资源 (jar 包),避免资源间的版本冲突等问题统一开发结构:提供标准的,统一的项目开发结构,如下图所示 java:业务 Java 源码
resources:配置文件、静态资源等(如 application.yml)
test:测试源码
pom.xml:项目描述文件(依赖、插件、构建参数等都在这里)
在这里插入图片描述3. Maven 配置环境3.1 Maven 的下载官方下载地址:https://maven.apache.org/download.cgi
在这里插入图片描述
将压缩包直接解压到任意目录即可使用(为减少环境问题,尽量避免路径包含中文或空格)。
3.2 Maven 仓库在以后开发的时候,可能会做项目,这些项目的依赖都会从本地仓库去获取 (一般在自己电脑上),如果本地仓库没有, 他就会从远程仓库进行下载,最后放到本地仓库。
因此一般情况下,本地仓库会配置在本机的位置;
远程仓库通常指 Maven Central 等公共仓库。为了加速访问远程仓库,我们一般配置国内的镜像(mirror)(国外直连可能较慢)。
在这里插入图片描述3.3 本地仓库配置修改 Maven 安装包中的 conf/settings. xml 文件,指定本地仓库位置。
在这里插入图片描述 如果不进行配置,默认路径会在 C:\Users\用户名\.m2\repository 下
3.4 远程仓库镜像配置镜像不是“新增一个远程仓库”,而是把你对某个远程仓库的请求重定向到另一个地址(比如阿里云),从而下载更快。
代码语言:javascript复制
在这里插入图片描述4. 与 IDEA 集成4.1. 在 IDEA 中全局配置 Maven (可选)在欢迎页,点击左侧Customize → 最下面 All settings
如果已经打开项目,点击左上角File → close project即可
在这里插入图片描述左上角搜索Maven,进行配置
别忘记勾选Override,否则无法进行更改
在这里插入图片描述示例:
在这里插入图片描述到这里,点击 Apply ,再点击 OK 即可。
4.2 创建项目在 IDEA 的新建项目中,创建 Maven 项目常见有两种方式(不同版本入口名字略有差异),两者区别如下:
Maven Archetype:Maven 项目模板工具,可以通过选择 Archetype(如 maven-archetype-webapp)自动生成项目骨架(目录结构、示例代码、pom.xml 等)普通 Maven 项目:创建更“干净”的 Maven 工程,通常只生成基础的 pom.xml 与 src 目录,其余结构/依赖按需添加展示效果
Maven Archetype:
在这里插入图片描述Java:
在这里插入图片描述4.3 pom.xml 文件介绍当涉及到使用他人框架的时候,需要导入 jar 包,会使用 pom.xml,在初始的文件中,只会记录项目的基本信息,示例如下。
在这里插入图片描述
而引入的依赖,会存放在
代码语言:javascript复制
在右侧,可以点击 Maven 的目录,可以使用 Maven 的一些功能,常用的有 clean、
package。
在这里插入图片描述clean:清理缓存(主要是删除项目下的 target 目录)。 clean 本身不会去清理本地仓库,也不是“修复依赖”的命令。
如果你 clean 之后看到 pom.xml 的红色提示慢慢消失,通常是因为 IDEA 触发了 Maven 的重新导入/依赖解析,依赖被重新下载后恢复正常。
package:打包项目,他会按顺序触发其他功能 (validate → compile → test → package),用于部署或分发。
结语到这里,你至少应该能回答三个问题:
pom.xml 是做什么的(声明依赖、插件与构建规则)依赖为什么会下载到本地仓库,以及本地仓库/镜像的意义IDEA 里 Maven 配不好会出现什么现象、应该去哪里改