Windows下Maven安装配置全指南:避坑、验证与企业级实践
1. 这不是“装个软件”那么简单:为什么Windows下Maven配置总让人反复折腾
你是不是也经历过——下载完Maven压缩包,解压、配环境变量、改MAVEN_HOME、追加%MAVEN_HOME%\bin到Path,最后在CMD里敲mvn -v,结果弹出“mvn 不是内部或外部命令”?或者好不容易显示版本号了,一跑mvn clean install就报错“Could not transfer artifact”,死活连不上中央仓库?又或者用IDEA新建Maven项目时,提示“Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:3.1.0”?这些都不是偶然,而是Windows系统特性、Java生态依赖链、Maven自身设计逻辑三者叠加后必然出现的“摩擦点”。
核心关键词Windows、Maven、安装、配置、软件安装包,表面看是四个动作,实则是一条贯穿开发环境底层的“信任链重建”过程。Maven本身不提供.exe安装器,它依赖Java运行时(JRE/JDK),而Windows默认不预装JDK;它的配置不靠图形向导,全靠手动编辑环境变量和XML文件;它的“生效”不是点击“完成”就结束,而是需要CMD会话重启、IDE缓存刷新、甚至本地仓库元数据重建。更关键的是,“含软件安装包”这个需求背后,藏着一个被很多人忽略的事实:官方Apache Maven只提供二进制压缩包(.zip),没有Windows Installer(.msi)。那些标着“Maven安装包下载”的网页,90%提供的是第三方打包的集成版,里面可能混入广告软件、捆绑工具,甚至篡改了settings.xml默认配置。我见过三次真实案例:开发同学从非官网渠道下载所谓“一键安装版Maven”,结果settings.xml里被悄悄写入了指向私有镜像的mirrorOf *配置,导致团队其他成员拉取依赖时全部失败,排查三天才发现根源。
所以这篇内容不是教你怎么点下一步,而是带你亲手把这条信任链每一环都拧紧、擦亮、验明正身。适合三类人:刚转Java的新人(避开前人踩过的所有坑)、带新人的Team Lead(需要一份可直接发给实习生的标准化文档)、以及被CI/CD流水线莫名其妙失败折磨得睡不着的运维同事(很多构建失败,源头就在本地Maven配置没对齐)。接下来所有操作,我都基于Windows 10/11原生环境,不依赖PowerShell高级模块,不假设你已装好Git或Node.js,一切从零开始,每一步都告诉你“为什么必须这样”,而不是“照着做就行”。
2. 安装与配置的底层逻辑:为什么顺序不能乱、路径不能带空格、环境变量名必须大写
2.1 Maven安装的本质:解压即安装,但“解压位置”决定成败
Maven官方分发包是.zip格式,解压后得到一个包含bin/、conf/、lib/等目录的文件夹。这看似简单,但Windows下有三个致命细节:
路径绝对不能含中文、空格、特殊符号
比如解压到C:\Program Files\apache-maven-3.9.6,看着很规范,但Program Files中的空格会让mvn.cmd脚本在解析%~dp0(当前脚本所在盘符路径)时截断,导致MAVEN_HOME识别为C:\Program,后续所有路径拼接全错。我实测过,哪怕只是C:\my maven\这样的路径,也会在某些老旧批处理调用中出问题。正确做法是:强制使用纯英文、无空格、无括号的路径,例如C:\dev\maven或D:\tools\maven。这不是矫情,是Windows CMD解析器几十年的老毛病。解压后必须保留原始目录结构,不能“解压到当前文件夹”
很多人右键解压选择“解压到maven-3.9.6\”,结果得到C:\dev\maven-3.9.6\bin\mvn.cmd;但若选“解压到当前文件夹”,就会变成C:\dev\bin\mvn.cmd,conf/目录丢失,settings.xml根本找不到。Maven启动脚本mvn.cmd第一行就写死了set MAVEN_HOME=%~dp0..,意思是“向上一级目录找MAVEN_HOME”,这个“上级”必须是包含bin/、conf/、lib/的根目录。验证方法:打开解压后的根目录,必须能看到bin、conf、lib、boot四个一级子目录。不要用7-Zip等第三方解压工具“跳过目录层级”
某些解压软件勾选“解压时跳过第一层文件夹”会导致apache-maven-3.9.6\bin\直接变成bin\,破坏结构。务必用Windows自带解压功能,或7-Zip中取消勾选“跳过第一层目录”。
2.2 环境变量配置:MAVEN_HOME与Path的共生关系
Windows环境变量是Maven能被全局调用的唯一通道。这里有两个常见误区:
误区一:“只配Path就够了”
Path里加%MAVEN_HOME%\bin,但没定义MAVEN_HOME,CMD会把%MAVEN_HOME%当字面量,最终查找C:\Windows\system32\%MAVEN_HOME%\bin\mvn.cmd,当然失败。MAVEN_HOME是Maven脚本的“锚点”,Path是系统的“寻路指令”,二者缺一不可。误区二:“MAVEN_HOME
可以随便起名,比如M2_HOME”**M2_HOME是Maven 2时代的遗留变量,Maven 3.x官方文档明确要求使用MAVEN_HOME。虽然部分旧脚本兼容M2_HOME,但mvn.cmd内部优先读取MAVEN_HOME,且IDE(如IntelliJ)默认只识别MAVEN_HOME。**统一用MAVEN_HOME`,避免跨工具链不一致。实操细节:系统变量 vs 用户变量
如果你只给自己用,配“用户变量”即可;如果要让所有Windows账户(包括服务账户)都能用,必须配“系统变量”。但注意:修改系统变量需管理员权限,且修改后所有已打开的CMD窗口不会自动更新,必须关闭重开。我的建议:新手一律配用户变量,等完全跑通再考虑系统级部署。
2.3 Java环境是Maven的“氧气”,版本匹配是生死线
Maven 3.9.x要求JDK 8或更高版本,但很多人忽略了“JDK”和“JRE”的区别。java -version能运行,不代表有javac编译器,而Maven编译项目时必须调用javac。验证方法:CMD里执行javac -version,若提示“不是内部或外部命令”,说明你装的是JRE,不是JDK。
更隐蔽的坑是JDK版本与Maven插件兼容性。例如Maven Compiler Plugin 3.10+默认使用Java 17语法,如果你的pom.xml里<maven.compiler.source>设为8,但本地JDK是11,编译会通过;但如果设为17,而本地只有JDK 8,就会报错Fatal error compiling: invalid target release: 17。因此,JAVA_HOME必须指向完整的JDK安装路径(如C:\Program Files\Java\jdk-11.0.21),且java -version与javac -version输出版本号必须一致。
提示:Windows下
JAVA_HOME路径中的空格同样致命。若JDK装在C:\Program Files\Java\jdk-11.0.21,JAVA_HOME应设为C:\Progra~1\Java\jdk-11.0.21(利用DOS短文件名),或直接重装JDK到C:\dev\jdk-11.0.21。后者更彻底,我推荐。
3. 手把手实操:从下载到验证的完整闭环(附避坑清单)
3.1 下载:只认准官方源,拒绝“安装包”陷阱
“含软件安装包”是用户刚需,但必须明确:Apache Maven官网(https://maven.apache.org/download.cgi)只提供.zip和.tar.gz压缩包,没有.exe或.msi。所谓“安装包”,本质是压缩包。下载时务必核对三点:
校验SHA-512哈希值:官网页面提供每个文件的SHA-512值。下载后,在CMD中执行:
certutil -hashfile apache-maven-3.9.6-bin.zip SHA512输出的哈希值必须与官网完全一致。这是防止中间人篡改的唯一手段。我曾因一次网络波动下载到损坏包,哈希值对不上,
mvn.cmd脚本头部损坏,导致mvn -v直接报语法错误。选择
-bin.zip而非-src.zip:-src.zip是源码,不能直接运行;-bin.zip才是二进制可执行包。警惕百度搜索结果里的“高速下载”链接:这些链接常跳转至第三方网盘,文件名可能被改为
maven_setup.exe,实则是封装了恶意程序的自解压包。永远从官网点击下载,不要复制链接到迅雷等工具。
注意:官网下载页同时提供GPG签名,但Windows用户验证GPG过于复杂,SHA-512校验已足够安全。若企业内网严格要求,可安装Gpg4win后按官网指南验证。
3.2 解压与目录准备:创建可复用的开发根目录
我强烈建议你建立一个统一的C:\dev\目录作为所有开发工具的家。原因有三:一是路径短,减少空格风险;二是语义清晰,C:\dev\maven、C:\dev\jdk、C:\dev\git一目了然;三是便于后续用脚本批量管理。操作步骤:
- 在资源管理器中新建文件夹
C:\dev(若提示需要管理员权限,点击“继续”)。 - 访问Maven官网,下载
apache-maven-3.9.6-bin.zip(以3.9.6为例,最新版请自行替换)。 - 右键该ZIP文件 → “全部提取到...” → 在弹出窗口中,手动输入
C:\dev\maven(不要用浏览按钮选,避免路径被自动补全为空格路径)→ 点击“提取”。 - 提取完成后,进入
C:\dev\maven,确认存在bin、conf、lib、boot四个文件夹。此时C:\dev\maven就是你的MAVEN_HOME。
实操心得:我习惯在
C:\dev下建一个versions.txt文件,记录每个工具的版本和安装日期,例如:Maven: 3.9.6 (2023-10-15) JDK: 11.0.21 (2023-09-20) Git: 2.42.0 (2023-08-10)这样团队同步环境或排查问题时,一眼可知版本差异。
3.3 环境变量配置:用户变量设置全流程(截图级指引)
以下操作全程在Windows设置中完成,无需注册表编辑:
- 按
Win + R,输入sysdm.cpl,回车打开“系统属性”。 - 切换到“高级”选项卡,点击右下角“环境变量”按钮。
- 在“用户变量”区域,点击“新建”:
- 变量名:
MAVEN_HOME - 变量值:
C:\dev\maven(必须与你解压的实际路径完全一致)
- 变量名:
- 在“用户变量”区域,找到名为
Path的变量,选中后点击“编辑”。 - 在弹出的“编辑环境变量”窗口中,点击“新建”,输入:
%MAVEN_HOME%\bin - 关键一步:确保
%MAVEN_HOME%\bin这一行排在Path列表的最上方。因为Windows按顺序查找Path,如果前面有其他mvn命令(如旧版本或Git Bash自带的),会优先命中错误版本。拖动它到顶部。 - 点击“确定”保存所有更改。
验证是否成功:必须新开一个CMD窗口(旧窗口不会加载新变量)。在CMD中依次执行:
echo %MAVEN_HOME% # 应输出 C:\dev\maven echo %PATH% # 查看输出中是否包含 %MAVEN_HOME%\bin 字样 mvn -v # 正常应输出 Maven版本、Java版本、OS信息若
mvn -v报错,请立即检查:① CMD是否新开;②MAVEN_HOME路径是否多打斜杠(如C:\dev\maven\末尾的\);③Path中%MAVEN_HOME%\bin是否拼写错误。
3.4 本地仓库初始化:为什么第一次mvn compile会卡住十分钟
Maven默认本地仓库在C:\Users\<用户名>\.m2\repository。这个目录首次使用时是空的,当你执行任何需要下载依赖的命令(如mvn compile),Maven会:
- 读取
C:\dev\maven\conf\settings.xml(全局配置) - 读取
C:\Users\<用户名>\.m2\settings.xml(用户配置,若存在则覆盖全局) - 根据配置中的
<localRepository>标签确定仓库路径(默认即.m2\repository) - 尝试连接中央仓库
https://repo.maven.apache.org/maven2/,下载maven-metadata.xml等元数据
这就是为什么第一次运行会卡住:它在后台默默下载org/apache/maven/plugins/maven-clean-plugin/3.3.2/maven-clean-plugin-3.3.2.pom等上百个文件。别慌,这是正常现象。但你可以优化:
方案一:预设本地仓库路径,避免C盘爆满
Windows用户C:\Users通常在系统盘,.m2仓库动辄几十GB。在C:\Users\<用户名>\.m2\下新建settings.xml(若不存在),添加:<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\m2_repository</localRepository> </settings>然后手动创建
D:\m2_repository文件夹。这样所有依赖都存到D盘。方案二:配置阿里云镜像,提速10倍
中央仓库在国外,国内直连慢且不稳定。在上述settings.xml的<mirrors>节点内添加:<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>注意
<mirrorOf>*</mirrorOf>:星号表示匹配所有仓库,这是关键。很多教程写成<mirrorOf>central</mirrorOf>,只镜像中央仓库,但Spring Boot等starter依赖可能来自其他仓库,仍会走慢速通道。
常见问题:配置镜像后
mvn -v报错“Non-resolvable parent POM”。这是因为settings.xml语法错误。XML必须严格闭合,<mirrors>必须在<settings>根节点内,且不能有中文字符。用记事本保存时,务必选择“UTF-8无BOM”编码(Notepad++可设),否则BOM头会导致解析失败。
4. 深度配置与实战验证:从Hello World到企业级项目
4.1settings.xml核心配置详解:不只是换镜像
settings.xml是Maven的“大脑”,其重要性远超环境变量。我们来拆解一个生产环境可用的最小化配置:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- 1. 本地仓库路径 --> <localRepository>D:\m2_repository</localRepository> <!-- 2. 插件组列表:加速插件解析 --> <pluginGroups> <pluginGroup>org.springframework.boot</pluginGroup> <pluginGroup>org.apache.maven.plugins</pluginGroup> </pluginGroups> <!-- 3. 镜像配置:阿里云为主,中央仓库为备 --> <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> <!-- 备用:当阿里云不可用时,回退到中央仓库 --> <mirror> <id>central</id> <mirrorOf>!aliyunmaven</mirrorOf> <name>Maven Repository Switchboard</name> <url>https://repo.maven.apache.org/maven2</url> </mirror> </mirrors> <!-- 4. 服务器认证:访问私有仓库必需 --> <servers> <server> <id>nexus-releases</id> <username>deploy-user</username> <password>{your-encrypted-password}</password> </server> </servers> <!-- 5. 代理配置:企业内网必需 --> <proxies> <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <host>proxy.company.com</host> <port>8080</port> <username>proxy-user</username> <password>proxy-pass</password> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy> </proxies> </settings>逐项解读:
<localRepository>:如前所述,指定仓库位置。强烈建议用SSD硬盘,机械盘会严重拖慢构建速度。<pluginGroups>:Maven在解析mvn spring-boot:run这类简写命令时,会自动在这些组里搜索插件。加上org.springframework.boot,就能直接用mvn spring-boot:run,不用写全mvn org.springframework.boot:spring-boot-maven-plugin:3.1.0:run。<mirrors>:双镜像策略。<mirrorOf>!aliyunmaven</mirrorOf>表示“除了aliyunmaven之外的所有仓库”,这样当阿里云挂掉,请求自动路由到中央仓库,保证构建不中断。<servers>:<id>必须与pom.xml中<distributionManagement>的<repository>的<id>完全一致,否则上传失败。密码绝不能明文,必须用Maven自带工具加密:mvn --encrypt-master-password your-master-password生成主密码,再mvn --encrypt-password your-server-password生成密文。<proxies>:企业内网必备。<nonProxyHosts>用|分隔,支持通配符*,如*.company.com|localhost。
实操心得:我从不手写
settings.xml,而是用Maven Archetype生成模板。执行mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false,它会自动创建标准结构,并在target/generated-sources/archetype/src/main/resources/archetype-resources/里留下settings.xml骨架,稍作修改即可复用。
4.2 创建第一个Maven项目:用命令行验证全流程
环境配好后,必须亲手创建一个项目验证。不要用IDE,用最原始的命令行:
新建项目目录:
mkdir C:\dev\hello-maven && cd C:\dev\hello-maven生成标准骨架:
mvn archetype:generate ^ -DgroupId=com.example ^ -DartifactId=hello-maven ^ -DarchetypeArtifactId=maven-archetype-quickstart ^ -DinteractiveMode=false注意:Windows CMD中长命令用
^续行,Linux/macOS用\。若提示[INFO] Scanning for projects...后卡住,说明镜像配置未生效或网络不通,检查settings.xml。进入项目:
cd hello-maven编译:
mvn compile
首次执行会下载maven-compiler-plugin、maven-surefire-plugin等插件及依赖,耐心等待。成功后看到BUILD SUCCESS,且target/classes下生成了App.class。打包:
mvn package
生成target/hello-maven-1.0-SNAPSHOT.jar。注意:此JAR不含依赖,只是编译产物。运行:
java -cp target/hello-maven-1.0-SNAPSHOT.jar com.example.App
输出Hello World!,证明Java环境、Maven编译、Classpath均正确。
关键验证点:执行
mvn dependency:tree,查看依赖树。若看到org.apache.maven.surefire:surefire-junit4:2.22.2等插件,说明插件仓库配置成功;若看到junit:junit:4.13.2,说明中央/镜像仓库连通。
4.3 与主流IDE集成:IntelliJ IDEA配置要点
Maven配好了,但IDE可能不认。以IntelliJ IDEA 2023.2为例:
打开IDEA →
File→New→Project→ 左侧选Maven→ 取消勾选Create from archetype→ Next。GroupId:com.example,ArtifactId:idea-demo→ Next → Finish。项目创建后,右键项目根目录 →
Add Framework Support→ 勾选Maven→ OK。关键配置:
File→Settings→Build, Execution, Deployment→Build Tools→Maven:Maven home path: 选择C:\dev\maven(不要选Bundled,那是IDE自带的阉割版)User settings file: 指向你的C:\Users\<用户名>\.m2\settings.xmlLocal repository: 自动读取settings.xml中的<localRepository>,若为空则填D:\m2_repository
点击右上角
Maven工具窗口 → 点击Reload project图标(蓝色循环箭头)。此时IDEA会读取pom.xml,下载依赖,索引完成。
常见问题:IDEA中
mvn clean install成功,但Run按钮灰色。这是因为IDEA默认用Maven运行配置,需手动创建:Run→Edit Configurations→+→Maven→Command line填clean install→Working directory选项目根目录。这样就能一键构建。
5. 故障排查与避坑大全:那些让你加班到凌晨的“灵异事件”
5.1 经典报错与根因分析(附速查表)
| 报错信息 | 根本原因 | 排查步骤 | 解决方案 |
|---|---|---|---|
'mvn' is not recognized as an internal or external command | Path未生效或MAVEN_HOME未定义 | ① 新开CMD →echo %MAVEN_HOME%;②echo %PATH%查%MAVEN_HOME%\bin是否存在 | 重新配置环境变量,确保新开CMD;检查Path中是否有重复或错误路径 |
Error: Could not find or load main class org.apache.maven.cli.MavenCli | MAVEN_HOME路径错误,或lib/目录缺失 | ①dir %MAVEN_HOME%\lib看是否列出jar包;②echo %MAVEN_HOME%是否多出\ | 检查解压路径是否完整;重装Maven到纯英文路径 |
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile | JDK版本与pom.xml中<maven.compiler.source>不匹配 | mvn -v看Java版本;cat pom.xml | findstr "compiler" | 修改pom.xml或安装匹配JDK;或在settings.xml中配置<profile>强制指定 |
Could not transfer artifact ... from/to central | 网络不通或镜像配置错误 | ping maven.aliyun.com;curl -I https://maven.aliyun.com/repository/public/org/apache/maven/plugins/maven-clean-plugin/3.3.2/maven-clean-plugin-3.3.2.pom | 检查settings.xml中<mirrorOf>是否为*;关闭代理软件;企业内网配<proxies> |
Non-resolvable parent POM for com.example:demo:1.0-SNAPSHOT | pom.xml中<parent>的<relativePath>指向错误,或父POM未下载 | mvn help:effective-pom看实际解析的parent路径;dir D:\m2_repository\org\springframework\boot\spring-boot-starter-parent | 删除<relativePath>标签(默认为../pom.xml);或手动mvn dependency:get -Dartifact=org.springframework.boot:spring-boot-starter-parent:3.1.0 |
5.2 隐藏极深的Windows专属坑
杀毒软件拦截
mvn.cmd
某些国产杀软(如某360、某电脑管家)会将mvn.cmd误判为“可疑批处理”,静默阻止执行。现象:CMD中敲mvn -v无任何输出,光标直接换行。解决方案:临时关闭杀软,或将其加入白名单;用PowerShell替代CMD(powershell -Command "& 'C:\dev\maven\bin\mvn.cmd' -v")。Windows Terminal与CMD行为差异
Windows Terminal(微软商店下载)默认启动PowerShell,而mvn.cmd是为CMD设计的。在WT中直接输mvn -v会报错。必须先切换到CMD:在WT中点击+→Command Prompt,或在PowerShell中执行cmd /c mvn -v。OneDrive同步冲突
若.m2目录在OneDrive同步文件夹内,Maven下载依赖时,OneDrive会锁定文件,导致mvn clean install中途失败,报Access is denied。解决方案:将<localRepository>设为非OneDrive路径,如D:\m2_repository。
5.3 企业级场景加固:多版本共存与CI/CD对齐
大型团队常需并存Maven 3.6.x(兼容老项目)和3.9.x(用新特性)。Windows下实现方式:
- 方案:用
mvn.cmd软链接(需管理员权限)- 分别解压两个版本到
C:\dev\maven-3.6.3和C:\dev\maven-3.9.6。 - 以管理员身份运行CMD,执行:
此时mklink /J C:\dev\maven C:\dev\maven-3.9.6MAVEN_HOME=C:\dev\maven指向3.9.6。 - 需切回3.6.3时,删除链接并重建:
rmdir C:\dev\maven mklink /J C:\dev\maven C:\dev\maven-3.6.3 - CI/CD对齐:Jenkins或GitLab Runner的Agent机器,必须用相同方式配置
MAVEN_HOME,且settings.xml必须与开发者完全一致。我习惯将settings.xml放在项目根目录config/maven/settings.xml,并在CI脚本中指定:mvn -s config/maven/settings.xml clean install。
- 分别解压两个版本到
最后分享一个血泪教训:某次升级Maven到3.9.6后,所有CI构建失败,报
Plugin execution not covered by lifecycle configuration。排查三天发现,是Maven 3.9.x默认启用--no-transfer-progress,而公司私有Nexus仓库的SSL证书是自签名的,旧版Maven会忽略证书错误,新版则严格校验。解决方案:在settings.xml的<servers>中为Nexus配置<configuration>启用证书忽略(不推荐),或让运维更新Nexus证书(推荐)。
6. 后续演进与效率提升:让Maven成为你的自动化工厂
配好Maven只是起点。真正的效率提升在于让它自动化、智能化:
用
mvn versions:display-dependency-updates定期检查依赖更新
在项目根目录执行,它会扫描pom.xml中所有依赖,列出可升级的版本。配合mvn versions:use-latest-versions可一键升级(谨慎使用,需测试)。用
mvn dependency:analyze-only精简臃肿的依赖
老项目常有大量unused declared dependencies(声明了但没用)和used undeclared dependencies(用了但没声明)。执行后生成报告,帮你清理技术债。用
mvn -T 4 clean install开启并行构建-T 4表示用4个线程编译模块。对于多模块项目,速度提升显著。线程数建议设为CPU核心数-1,避免系统卡死。终极技巧:用
mvn help:effective-settings生成当前生效的完整配置
它会合并conf/settings.xml、user/.m2/settings.xml、命令行参数,输出最终生效的XML。当配置打架时,这是唯一的真相之源。
我在实际使用中发现,最省时间的操作不是学新命令,而是养成每次配环境后,立刻执行mvn -v && mvn help:effective-settings > effective-settings.xml,把这份文件存档。半年后项目重构,翻出这个XML,比翻十篇教程都管用。Maven的哲学是“约定优于配置”,但Windows下的约定,需要你亲手把它刻进系统深处。现在,你手里握着的不再是一个安装包,而是一把打开Java世界大门的、自己打磨的钥匙。
