文章目录
前言
- Maven(发音为“梅文”)是Apache软件基金会开发的一个开源项目管理和构建自动化工具,主要用于Java项目
- 通过标准化项目结构和自动化常见任务,帮助开发者高效管理软件开发的生命周期
一、Maven 概述
1. 介绍
- Maven是一个基于项目对象模型(Project Object Model, POM)的工具
- POM是一个XML文件(通常命名为
pom.xml
),定义了项目的元数据(如项目名称、版本、依赖关系等) - Maven的核心思想是“约定优于配置”,即提供默认的项目结构和构建流程,减少手动设置
2. 功能
2.1 依赖管理
处理项目所需的第三方库(依赖)的自动下载、版本协调和冲突解决
- 自动下载和管理依赖:通过在
pom.xml
文件中添加库的坐标(如groupId
,artifactId
,version
),Maven会自动从中央仓库下载所需库文件,并管理其存储(本地仓库) - 处理依赖冲突:自动解析不同依赖之间的版本兼容性问题,避免运行时错误(例如,通过依赖传递规则和冲突解决策略)
2.2 项目构建
涵盖代码的编译、测试、打包、文档生成等标准化生命周期过程,以及项目结构的组织
- 构建自动化:执行标准化的构建生命周期命令(如
mvn clean install
),一键完成编译代码、运行单元测试、打包应用(生成JAR或WAR文件)等任务 - 标准化项目结构:强制项目遵循统一目录布局(如
src/main/java
存放源代码,src/test/java
存放测试代码),提高可维护性和工具集成效率 - 报告和文档生成:自动生成项目报告(如测试覆盖率报告)和文档(如API文档),通过插件扩展功能(如使用Maven Site插件)
- 多模块管理:支持大型项目拆分为多个子模块(每个模块有自己的
pom.xml
),便于依赖共享(如父模块管理公共依赖)和构建控制(如整体构建或模块独立构建)
3. 优点
- 提高效率:自动化构建和依赖管理,减少手动操作,缩短开发周期
- 依赖管理强大:解决“依赖地狱”问题,确保库版本一致,避免冲突
- 标准化和一致性:所有项目遵循相同结构,便于新成员上手和跨团队协作
- 插件生态系统:丰富的插件(如Maven Surefire用于测试)支持扩展功能,适应不同需求
- 跨平台:基于Java,可在Windows、Linux、macOS等系统运行。
- 集成友好:与IDE(如Eclipse、IntelliJ IDEA)、持续集成工具(如Jenkins)无缝集成
4. 使用场景
- Java项目开发:中小型到大型Java应用,包括Web应用(如Spring Boot)、桌面应用等
- 依赖密集型项目:当项目需要大量第三方库(如Apache Commons或Log4j)时,Maven简化了管理
- 团队协作环境:确保所有开发者使用相同的构建流程和依赖版本,减少环境差异问题
- 持续集成/持续部署(CI/CD):在自动化流水线中,Maven命令可集成到构建脚本中,实现一键构建和测试
- 开源项目:许多开源项目(如Apache项目)使用Maven,便于贡献者快速上手
二、安装步骤
1.地址
2.下载
官网下载:有最新的版本,但下载速度可能较慢
镜像网址:如阿里云或华为云,下载速度更快(节省时间)
直接访问对应网址,选择对应版本(如
3.9.8
目录)下载二进制包(通常是.zip
或.tar.gz
文件)
链接详情
3.解压
将文件解压到自己存放Maven的文件夹(建议不含有中文和空格)
三、配置过程
1.本地仓库
解压之后,进入加压之后的文件夹,新建名为repository
的文件夹,作为Maven
的本地仓库(后续项目下载的依赖包存放位置)
2.配置环境变量
2.1 配置Maven环境变量
复制Mavend的解压地址 – > F:\Develop\Maven\apache-maven-3.6.3
然后配置环境变量,可以按照如下流程(只要能找到系统变量即可):
配置完成后点击确定!
2.2 配置本地仓库环境变量
再次点击新建,添加之前新建的repository
文件夹路径
然后点击确定,下面将上面配好的路径变量配置在path
中,如下图所示:
配置完成后,一直点击确定就好!
2.3 查看变量是否生效
唤出命令窗口(WIN+R
输入cmd
或者鼠标右键->在终端打开
)
输入mvn -v
输出上述信息就是配置成功了!
注意:如果配置之前就打开了命令提示窗口,配置完成后需要关闭重新打开,然后输入命令验证(已打开的窗口会保留加载时的环境变量快照,不会自动同步后续的更改)
3.配置文件
Maven的配置文件 --> settings .xml
3.1 JDK配置
PS: 在
settings.xml
配置JDK
的意义在于强制 Maven 编译器以 Java 8 标准编译代码并生成兼容 Java 8 的字节码,不受当前 JAVA_HOME 指向的更高版本 JDK 影响,确保项目在 Java 8 环境下的语法合规性和运行兼容性 (JDK 是环境,配置是指令)
如果没有配置JDK
,Maven
会直接使用JAVA_HOME
环境变量设置的JDK
如下图:
但这种方式可能导致版本不一致或构建失败,下面显示指定JDK:
打开settings.xml
:
搜索profiles
标签,找到如下内容:
将下面的内容添加到profiles
标签内部:
<!-- java版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
然后保存退出!
3.2 本地仓库地址配置
本地仓库起的作用相当于一个缓存。Maven在进行依赖管理管理的时候首先会到本地仓库中查找,如果本地仓库中已经有当前依赖;则直接使用,如果没有则会从远程仓库下载到本地仓库中,然后使用。
如果不配置本地仓库路径,Maven下载的依赖默认存放路径为${user.home}/.m2/repository
,其中${user.home}
代表当前用户的home目录,如C:\Users\fc\.m2
但是随着时间的累积,.m2/respository
中的依赖包会越来越多,这样C盘的负担就会很大,推荐使用新建的repository文件夹作为本地仓库(方便管理)
3.2.1 绝对地址
F:\Develop\Maven\apache-maven-3.6.3\repository
需要替换成自己本地的文件路径
3.2.2 环境变量地址
${env.M2_HOME}
中的M2_HOME
也是上面在配置环境变量中所指定的
3.3 远程仓库地址配置
搜索 mirrors
标签:
添加如下镜像信息:
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
mirrorOf
表示覆盖的范围:*
->所有仓库、central
->中央仓库
如果想使用其它代理仓库,可在repositories
标签中加入对应的仓库使用地址。以使用spring代理仓为例:
<repository>
<id>spring</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
镜像汇总参考地址:https://wiki.zjq.im/docs/java/cn-maven-mirrors/
阿里云镜像地址: https://developer.aliyun.com/mirror/maven
4.测试
配置完成后,保存文件,退出,然后唤出命令窗口,输入mvn help:system
mvn help:system
是 Apache Maven 的一个内置命令,主要用于显示当前系统的环境信息和 Maven 配置详情。执行该命令后,Maven 会输出系统属性、环境变量、Maven 配置等关键信息。第一次执行可能会下载一些缺省依赖包。