每个Java后端开发都绕不开Maven,但很多人第一次接触它时,光是把环境跑通就折腾了半天。下载、安装、配环境变量、改配置文件,每一步都有坑,而且网上教程一堆,版本还各不相同,照着做经常卡在莫名其妙的地方。我这些年帮团队带过不少新人,也帮朋友排查过各种Maven环境问题,干脆把一套完整可复现的流程整理出来,从下载到配置文件修改,每一处都解释清楚为什么这么做,照着走基本不会出问题。
1. 先说清楚Maven是个啥,为什么要折腾它
1.1 没有Maven的时候,Java开发有多痛苦
2010年前后我刚开始写Java那会儿,项目里要引第三方库,比如Spring、MyBatis,流程是这样的:去官网下载jar包,或者去某个镜像站找,下完之后手动复制到项目的lib目录,然后再右键Add to Build Path。要是依赖的库还有自己的依赖,那就更头疼了,A依赖B、B依赖C,中间任何一个版本对不上,运行的时候直接NoClassDefFoundError,排查半天也不知道是哪个包没引全。
这还不算完,项目构建也是个大问题。老项目里常见的是Ant脚本,写一堆target,编译、打包、测试全得自己写逻辑,换一台机器可能就编译不过。多模块项目更麻烦,模块之间的依赖顺序、打包顺序都要手动维护,改一次漏一次。
所以Maven这类工具出现的核心目的就两个:依赖管理和项目构建。它把所有jar包的坐标信息写在pom.xml里,下载、传递依赖、版本管理全部自动完成;同时把编译、测试、打包、部署这些生命周期标准化,一条命令搞定本来一堆步骤的事。
1.2 Maven解决的痛点到底是什么
我理解Maven本质上是一个“约定优于配置”的工具。它规定了你的代码放在src/main/java,测试代码放在src/test/java,配置文件放src/main/resources,打包输出到target目录。只要你遵循这套约定,它就能自动化地完成构建流程,不需要你告诉它怎么做。
依赖管理方面,Maven用坐标来唯一定位一个jar包:groupId、artifactId、version。这三个值一组合,加上仓库地址,就能确定性地下载到对应版本的依赖。传递依赖机制也很关键,比如你引入spring-webmvc,它会自动把spring-core、spring-beans等底层依赖一起拉下来,彻底告别手动找jar包的年代。
不过Maven也有它的学习门槛,主要体现在两方面:本机环境配置和settings.xml配置。本机环境配不好,命令都跑不了;配置文件调不好,下载慢、编译版本不匹配、私服连不上这些问题就会轮番出现。接下来我按完整流程一步步说。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 下载前先搞清版本选择和渠道,别一上来就冲
2.1 确定JDK版本和Maven的对应关系
Maven本身是用Java写的,所以运行Maven需要本机已经装好JDK。这里有个非常容易踩的坑:不同版本的Maven对JDK版本有要求。Maven 3.8.x要求JDK 1.7以上才能运行;Maven 3.9.x则要求JDK 1.8以上。如果你的JDK版本太老,Maven运行时会直接报UnsupportedClassVersionError,或者更常见的情况是启动没反应、一闪而过。
所以下载之前先确认两件事:第一,本机已经装了哪些JDK版本,用java -version看一下;第二,确认自己项目的目标JVM版本是啥,这决定了Maven编译时用的source和target版本。
我个人的建议是:现在新项目直接JDK 8以上,Maven用3.8.x或3.9.x都行。如果是老项目还在用JDK 1.6或1.7,那Maven 3.8.x可能跑不起来,得用3.5.x这种老版本。不过现实中几乎遇不到这种情况了,除非你在维护古董系统。
2.2 选择Maven版本的几点考量
Maven目前主流的版本线是3.x系列,我自己用的3.8.8比较多,3.9.x也稳定。版本选择上我一般遵循这样的原则:
首先,不用最新的也不要太老的。最新的版本刚发布时可能有兼容问题,太老的版本对新的JDK支持不到位。比如Maven 3.8.x系列中,3.8.8是我实测下来最顺手的一个,各方向和JDK 8、JDK 11、JDK 17都能正常配合。
其次,注意Maven 4.x已经出来了,但说实话不建议急着用。Maven 4改动挺大的,很多老插件和新特性的兼容性还没有完全验证。生产环境和日常开发,3.8.x系列在很长一段时间内依然是最稳的选择。
最后,考虑你团队统一用啥版本就都用啥版本。Maven版本不一致虽然不影响项目构建,但某些插件在不同版本下表现可能不同,为了省事尽量统一。
2.3 从哪下载最靠谱
Maven官网是maven.apache.org,这是最权威的下载渠道。进入官网后,找到Download页面,往下拉找到"Files"那一块,会列出各个版本的下载链接。这里注意,Maven的Windows版本有两种格式:zip和tar.gz。Windows系统直接下载zip格式,解压就能用。
很多新手会问我,为什么不推荐从网盘或者第三方网站下载安装包。原因很简单:第三方渠道存在两个风险,一是安装包可能被植入恶意代码,二是版本可能是陈旧的或者被改过的。从官网下载虽然有时候会有点慢,但胜在安全可靠。
国内用户如果嫌官网下载慢,还有一个渠道是阿里云的镜像仓库,地址是maven.aliyun.com,里面也有Maven的二进制包。不过需要说清楚的是,阿里云镜像主要还是用来加速Maven依赖下载的,安装包本身就算慢也就几十兆,等一会儿的事,官网直接下完全可以。
3. 安装和配置环境变量,这一步错后面全乱
3.1 解压安装的正确姿势
下载好的压缩包,比如apache-maven-3.8.8-bin.zip,直接解压到你想安装的目录。这里有个建议:路径中间尽量不要有中文和空格。我见过有同事把Maven解压到F:\软件安装\maven这种目录,结果IDEA里配置Maven时各种妖路问题。其实Maven本身对中文路径的报错不一定必现,但IDEA和一些插件对路径的处理不一定规范,所以尽量用纯英文路径最省心。
我习惯的目录结构是建一个专门的开发工具目录,比如D:\dev\apache-maven-3.8.8,这样后续找起来方便,升级版本时直接在dev目录下解压新包,改一下环境变量指向就行。
解压完之后,先别急着配置环境变量。打开解压后的目录,确认一下里面的结构:bin目录下应该有mvn.cmd和mvn.cfg(Windows环境用mvn.cmd),conf目录下应该有settings.xml。其中settings.xml是后面配置修改的核心文件,它决定你依赖下载到哪里、从哪个仓库源下载、默认编译级别是啥。这些我后面单独说。
3.2 Windows环境变量配置详解
环境变量这块,我着重说Windows环境。
第一步,右键“此电脑” → 属性 → 高级系统设置 → 环境变量。在弹出的窗口里,你要操作的主要是“系统变量”区域,当然配在用户变量里也可以,但系统变量对所有用户生效,避免以后换用户登录环境失效的尴尬。
第二步,在“系统变量”区域点击“新建”,变量名填MAVEN_HOME,变量值填Maven解压的根目录。举例来说,如果你的Maven在D:\dev\apache-maven-3.8.8,那变量值就是这个路径。用专门的MAVEN_HOME变量,而不是直接写全路径,好处是升级版本时只需要改这一个变量,PATH里引用它就行。
第三步,找到系统变量里的Path,双击它,点击“新建”,在编辑框里输入%MAVEN_HOME%\bin,确定保存。为什么要配bin目录?因为mvn命令的可执行文件mvn.cmd就在bin目录里,把bin加入PATH后,我们在命令行任意位置输入mvn都能被系统找到。
第四步,验证配置是否生效。这个很关键:先关闭当前已打开的命令行窗口,重新开一个新的cmd窗口,输入mvn -v。如果能看到Maven版本信息、Java版本信息以及操作系统信息,说明环境变量配置成功。
好多新手在这一步会踩坑:配完环境变量,在原来的cmd窗口里执行mvn -v,结果报不是内部或外部命令。因为cmd窗口的环境变量是在启动时加载的,配置修改后不会自动刷新,必须重新开窗口才生效。
验证输出大概长这样:
code复制Apache Maven 3.8.8 (ddxxxxxxx)
Maven home: D:\dev\apache-maven-3.8.8
Java version: 1.8.0_xxx, vendor: Oracle Corporation
Java home: D:\dev\jdk1.8.0_xxx, ...
如果mvn -v能正常显示但Java related信息有问题,比如找不到JDK,通常是JAVA_HOME没配好。Maven运行需要JAVA_HOME指向JDK安装目录,这跟我前面说JDK要提前装好是呼应的。
3.3 mac和Linux环境下的配置思路
Windows之外,macOS和Linux上配置Maven的思路类似,只是操作方式不同。macOS可以用Homebrew直接装:brew install maven,这种最省事。但如果你想要指定版本,还是手动解压更可控。
Linux环境配置时,通常在/etc/profile文件末尾加几行:
bash复制export MAVEN_HOME=/opt/apache-maven-3.8.8
export PATH=$MAVEN_HOME/bin:$PATH
然后source /etc/profile让它生效。这里有个小细节:PATH变量里必须把$MAVEN_HOME/bin放在前面,防止系统里有其他版本的maven抢先命中。
我见过有人在服务器上明明配好了Maven,执行mvn -v却显示的是系统自带的另一个老版本,就是因为PATH里的优先级不对。检查方法很简单,用which mvn看找的是哪个路径。
4. 修改settings.xml配置,这才是Maven的灵魂
4.1 settings.xml文件里需要重点关注的几个配置项
Maven的配置文件是conf目录下的settings.xml,它是全局的Maven配置文件,影响所有用这个Maven实例的项目的构建行为。里面的配置项很多,但对大部分人来说,日常需要改的就那几个。
在说改什么之前,先解释一个概念:Maven仓库。Maven项目依赖的所有jar包,都会从仓库里获取。仓库分为本地仓库和远程仓库。本地仓库默认在用户目录下的.m2/repository目录,也就是C:\Users\你的用户名\.m2\repository;远程仓库就是Maven中央仓库,也就是Maven官方维护的公共仓库,地址是repo.maven.apache.org。
默认情况下,Maven下载依赖时先去本地仓库找,找不到就去中央仓库下载,下载完会缓存到本地仓库。这样下次同样的依赖就不需要重复下载了。
这里有一个很多新手忽略的关键点:本地仓库的位置一定要改,不要用默认的C盘路径。因为随着项目越来越多,C盘空间会被一堆jar包占满,而且系统重装的话这些缓存也都没了。反正这个配置也不复杂,顺手就改了。
4.2 修改本地仓库位置
打开settings.xml,搜索localRepository这个标签。默认情况下它被注释掉了,内容长这样:
xml复制<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
你需要把注释去掉,改成一个你指定的路径,例如:
xml复制<localRepository>D:/dev/maven-repository</localRepository>
这里要注意:路径分隔符建议用正斜杠/,Windows这个写法能正常识别,用反斜杠\在某些场景下可能出现转义问题。改完之后,Maven所有下载的依赖jar包都会存到这个目录,C盘压力一下小很多。
我自己的习惯是把本地仓库放在和Maven安装目录不在一起的独立位置,比如D:\dev\maven-repository。这样做的好处是,以后升级Maven版本时,解压新版本包只需要改MAVEN_HOME指向,本地仓库数据完全不受影响,所有依赖缓存都在。
4.3 配置阿里云镜像,解决下载慢的问题
这一步几乎是国内开发者必做的配置。Maven默认从中央仓库下载依赖,而中央仓库的服务器在国外,国内网络环境下载速度经常只有几KB/s甚至直接超时。配置了阿里云镜像之后,依赖会从国内节点下载,速度能快几十倍。
在settings.xml里找到<mirrors>这个标签,默认是被注释掉的。在<mirrors>标签内添加一个mirror配置:
xml复制<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
解释一下这几个子标签的含义:
id:镜像的唯一标识,理论上随意起名字,但建议用有意义的名称。mirrorOf:表示这个镜像要代理哪个仓库。填central就代表只代理中央仓库,这是最常用的配置。如果填*,代表所有远程仓库请求都走这个镜像,包括你自己配置的私有仓库,这可能会导致访问私有仓库时也用阿里云的地址,反而不对。所以我推荐就写central,只加速默认的中央仓库。url:镜像仓库的实际地址。
我实测下来,配置阿里云公共仓库以后,日常项目依赖的下载基本都是秒下,再也没有遇到过Jar包下载超时的问题。这个地址是阿里云对Maven中央仓库的同步镜像,不是某个公司内部的私服,内容是完整的公共依赖,不存在什么“下载的东西不正规”的顾虑。
4.4 配置JDK编译版本
很多Java项目在pom.xml里都会显式指定编译版本,但如果某些项目没配,Maven默认会使用当前JDK的版本。有些开发机装的是JDK 18、JDK 21这种新版本,项目里如果不指定编译级别,编出来的class文件版本可能过高,部署到服务器上的JDK版本低了就运行不了。
所以稳妥的做法是在settings.xml里配置一个Profile,指定所有项目的默认编译级别。在<profiles>标签内添加如下配置:
xml复制<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>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</profile>
这段配置干了三件事:第一,把源码编译级别统一为1.8;第二,把编译后class文件的目标版本也设为1.8;第三,指定项目源码编码为UTF-8,避免中文乱码问题。当然,如果你的项目需要编译到更高版本,比如JDK 17,就把1.8改成17。这只是全局默认,具体某个项目的pom.xml里如果显式配置了编译版本,会覆盖掉这个全局的值。
需要特别说明的是,这个配置对老项目特别重要。我遇到过一种情况:新人在自己电脑上装的最新版本JDK,编译的老项目直接报错,或者编出来的东西在测试环境跑不起来。就是因为没指定编译级别,Maven用了默认的当前JDK版本。配置了这个Profile之后,从根源上杜绝了这类问题。
4.5 settings.xml里其他值得关注的可选配置
除了上面几个必须改的,settings.xml里还有一些配置在特定场景下很有用。
<offline>标签:如果设为true,Maven就不会去远程拉取任何依赖,只在本地仓库找。这个配置适合完全没有外网的环境,但比较少见。
<servers>标签:私有仓库或私服需要认证时用到。比如公司内部的Nexus私服要求账号密码,在<servers>里配置server id和对应的用户名、密码。这个跟<mirrors>里的id是有关联的,mirrorOf指向某个仓库id时,认证信息就从servers里匹配。
还有一个容易纠结的问题:settings.xml里同时配置了阿里云镜像,但公司项目要连内部私有仓库,镜像配置会不会冲突?这里的关键在于<mirrorOf>的匹配规则。如果mirrorOf只写central,那么你项目里配置的其他repository(比如公司私服地址)不会被镜像劫持,能正常访问。只有把mirrorOf写成*才会把所有仓库请求都转发到阿里云,这种情况下私服反而访问不了了。所以我在前面强调mirrorOf要写external:http:*或者central,原因就在这里。
5. 配置完成后,用项目实测验证整个链路
5.1 用archetype快速生成一个测试项目
配置完Maven环境,最直接的验证方式就是创建一个项目跑一遍完整生命周期。打开命令行,进入一个临时目录,执行:
bash复制mvn archetype:generate -DgroupId=com.example -DartifactId=test-maven -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
这条命令的意思是让Maven使用quickstart这个项目模板创建一个基础Java项目,项目名是test-maven,包名是com.example。第一次执行的时候,Maven会下载大量必备插件,这一步恰好能验证依赖下载是否正常、镜像配置是否生效。
如果上面阿里云镜像配置成功,你会看到下载速度很快;如果速度慢得像蜗牛爬,八成是镜像没配置好,回去检查settings.xml。
执行完成后,目录下会出现一个标准的Maven项目结构:
code复制test-maven
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── example
│ └── App.java
└── test
└── java
└── com
└── example
└── AppTest.java
5.2 执行完整的构建生命周期
在项目根目录执行mvn clean package,这条命令是Maven生命周期里最常用的组合,它会依次执行:clean、validate、compile、test、package。执行完成后,target目录下会出现一个jar文件,名字大概是test-maven-1.0-SNAPSHOT.jar,同时控制台会输出BUILD SUCCESS。
这里我顺便说一下,Maven的生命周期不是串联关系而是阶段式的。一个阶段会包含它之前所有阶段。所以你执行package时,compile和test这些阶段会先执行。理解了这一点,你看到控制台一堆输出就不会懵了。
如果这个流程跑通了,说明你本机Maven环境已经彻底就绪。剩下的就是在IDE里配置Maven指向这个安装位置,IDEA里操作很简单:File → Settings → Build, Execution, Deployment → Build Tools → Maven,然后设置Maven home path为D:\dev\apache-maven-3.8.8,设置User settings file为D:\dev\apache-maven-3.8.8\conf\settings.xml,再设置Local repository为刚才配置的仓库路径。这三项配置好,IDEA里的Maven就完全和命令行一致了。
6. 高频报错与排查思路,我踩过的坑都在这里
6.1 环境变量配置后不生效
这个前面提到过,最常见原因就是没重开命令行窗口。但还有几个容易被忽视的情况。
一是Path变量里存在无效条目,尤其是用%MAVEN_HOME%\bin时如果MAVEN_HOME本身没有生效,那这条Path就找不到。验证方式是在cmd里执行echo %MAVEN_HOME%,如果能正确打印出路径,说明MAVEN_HOME配好了,再看echo %PATH%里有没有%MAVEN_HOME%\bin。
二是有多个Maven版本冲突。有些软件在安装时会自动把它的Maven路径加到PATH里,比如某些IDEA版本自带了Maven,但不会给你配PATH。如果执行where mvn能看到多个结果,说明有冲突,调整PATH顺序让目标版本靠前。
三是配置了用户变量和系统变量两套,而且值不一致。Windows系统里用户变量的优先级高于系统变量,也就是说如果用户变量里的MAVEN_HOME指向一个错误路径,系统变量里就算配了正确的也会被覆盖。解决方法是统一成一套。
6.2 依赖下载依然慢,阿里云镜像没生效
有时候明明配置了镜像,下载还是慢。先检查镜像配的是不是有问题,从命令行执行mvn dependency:resolve,日志里会打印当前使用的仓库地址,如果还是repo.maven.apache.org,说明mirror没生效。
常见原因:settings.xml的位置不对。Maven加载settings的顺序是:全局settings.xml(安装目录conf下)和用户settings.xml(默认在~/.m2/settings.xml),后者的优先级更高。如果你在用户settings.xml里写了一个<mirrors>但没有包含阿里云镜像,而全局settings.xml里又没有配,那阿里云配置自然就无效。
另一个原因:mirror的<mirrorOf>写得不对。如果写成mirrorOf>some-id</mirrorOf>而仓库请求的id不是这个值,就不会命中。大多数人想镜像中央仓库,直接写<mirrorOf>central</mirrorOf>最不容易出问题。
6.3 编译报错“程序包不存在”或“找不到符号”
这个报错一看像是在代码层面,但很多时候是因为依赖没有正确下载。在IDEA里Ctrl+Shift+F搜索这个报错的类名,看它在本地仓库里是否存在。如果本地仓库没有,说明依赖根本没有解析成功,可能是在下载时中断导致本地缓存不完整。
解决方式很粗暴:在项目根目录执行mvn clean dependency:purge-local-repository,这会清空本地缓存并重新拉取依赖。再执行mvn clean compile重新编译一次。
另外一个高频原因:你本地仓库路径变了,但IDEA里的Local repository还指向旧的路径。所以我在前面特意强调,配置本地仓库时一定要在settings.xml、IDEA的Maven配置里保持一致,否则项目里的依赖就是显示一直在下载但永远不结束。
6.4 settings.xml配置出错的常见症状
关于settings.xml本身,配置格式错了会直接报Malformed POM或Unrecognised tag这类错误。XML是严格格式的,任何标签没有闭合都会导致解析失败。我建议遇到这类问题先在IDEA或VS Code里打开settings.xml,看有没有红色波浪线标出的语法错误。
还有一处容易错:<localRepository>里路径末尾不能有空格,否则会出现奇怪的路径拼接问题。另外路径中不要有中文,在Windows环境下D:\本地仓库这种路径在某些终端工具下可能解析异常。
6.5 仓库存量一直增大,磁盘空间报警
本地仓库用久了,默认已经下载过几百个项目的所有依赖,体积能达到几个G甚至几十个G。这个其实不用太担心,那些jar包都是可重用缓存,项目构建时需要再次使用。真正占空间的是那些你根本不再需要的旧版本依赖,偶尔清理一次是合理的。
Maven没有内置的清理命令,我自己一般这么干:每个季度抽出时间,去本地仓库目录看看哪个groupId占了最大空间,确认没有项目用到后把对应目录删掉。如果你希望更精确一点,可以下载安装dependency-check之类插件,但日常来说手工清理就够用了。
理论上还有个极端的做法:直接把整个本地仓库目录删了重新下载。这适合实在搞不清楚哪个依赖有问题的情况,效果等于把Maven的“缓存”重置一遍。缺点是下次构建所有依赖重新下载,但配合阿里云镜像其实也就几分钟的事。
7. 一些使用Maven的经验心得,帮你少走弯路
7.1 版本管理别偷懒,统一规划
Maven本身只是一个构建工具,但实际项目中它和版本管理密切相关。团队开发,建议统一Maven版本和JDK版本,在项目文档里写清楚。我见过不少团队因为JDK版本不一致,编译报错、运行时异常频发,最后排查半天发现是某个成员用了新的JDK编译出的class文件版本过高。
最稳妥的做法是项目根目录的pom.xml里显式指定maven.compiler.source和maven.compiler.target,这样即使有人用自己的IDE默认环境编译也不会出问题。settings.xml里的Profile只是兜底,双重保险才够稳。
7.2 IDE里的Maven配置要和命令行保持一致
很多人只是在IDEA里看到Maven能用,觉得命令行配不配无所谓。我的经验是:尽量保持一致。因为你在命令行运行和IDEA里运行,如果依赖解析逻辑不一致,会出现“IDEA里程序跑得通,部署到服务器上构建失败”的奇怪情况。
IDEA的Maven配置在Settings里,把Maven home directory、User settings file、Local repository三项全部指到你实际用的那个就行。另外注意不要勾选“Use Maven 3 from IDEA”这种选项,除非你确定要用它内置的发行版。
7.3 善用Maven命令的组合技巧
Maven命令看似简单,但组合起来能解决很多问题。常用的我认为就这几个:
mvn clean:清理target编译产物mvn clean install:本地构建并安装到本地仓库,多模块项目必须用这个,让其他模块能引用到你的最新代码mvn clean package:打包成可执行的jar或warmvn test:只跑测试用例
dependency:tree这个命令也很实用,查看项目依赖树。当出现依赖版本冲突、包版本不确定时,这个命令能帮你定位到底谁引了哪个版本。
比如你想排查某个jar包从哪里引入的:
bash复制mvn dependency:tree -Dincludes=commons-io:commons-io
pom.xml里关于依赖冲突的关键是依赖仲裁机制,Maven采用“最短路径优先”和“最先声明优先”的原则。如果你希望排除某个传递依赖,用<exclusions>标签,这个在排查依赖冲突时非常常用。
7.4 考虑更现代的构建工具,但要保持敬畏
现在Gradle也很流行,尤其Android开发和很多新项目都转向了Gradle。但Maven依然占据大量存量项目和很多企业内部系统的Java构建场景。我的看法是:Maven并不是不可替代,但它的稳定性和生态成熟度在很长一段时间内依然是Java项目构建的首选。
如果你正在新起一个Java项目,Gradle的确在某些场景下体验更好,但Maven的约定优于配置、maven中央仓库的完整生态以及全世界的Maven用法的一致性,依然让它有着足够威力。建议先把Maven吃透,之后学Gradle会快很多,因为构建思想是相通的,只是语法和灵活度不同。
8. 写在最后的几条建议
Maven的下载安装和配置环境变量这些,本质上就是一次性的初始化工作。真正能让Maven工作效率提高的,是你对它配置文件的理解深度。修改settings.xml很多人只是照着教程粘上去,但里面的每个配置其实都有明确的语义,理解了之后遇到问题不会抓瞎。
我个人每次换新电脑,都会走一遍这套流程:下载Maven安装包、解压到开发目录、配置MAVEN_HOME和PATH、改settings.xml(本地仓库路径、阿里云镜像、JDK编译版本Profile)、命令行验证mvn -v、用archetype生成一个测试项目跑通构建。整个过程大概十分钟,但这十分钟解决了今后每一天开发都要依赖的基础设施问题。
最后一个小建议:把settings.xml备份一份放到网盘或者Git仓库里。换电脑或者帮同事排查问题时,直接拿出来改改路径就能用,省去了很多重复劳动。我自己的settings.xml已经沉淀了好几年,里面包含本地仓库路径、镜像配置、私服账号信息,每次新环境部署直接复制粘贴,基本不用动脑子。
