推荐用sdkman!安装maven 3.9.6,避免发行版包管理器安装的旧版或阉割版;需确保maven_home、path、文件权限三者对齐,并配置阿里云镜像源防下载卡死。

直接装 sdk install maven 最省事,别碰 apt install maven 或 dnf install maven —— 它们要么版本太旧(3.6.x),要么根本不是 Apache Maven(比如 CentOS 的 maven-local)。
先确认系统有没有“真”Maven
很多人以为 mvn -v 有输出就万事大吉,其实不然。常见陷阱:
-
command not found:真没装 - 输出版本是
3.6.3或更低:大概率不支持现代pom.xml里的<dependencymanagement></dependencymanagement>BOM 导入、<scope>import</scope>等写法,编译会卡在Could not resolve dependencies - 输出里
Maven home指向/usr/share/maven或/usr/lib/maven:这是发行版打包的阉割版,路径下甚至没有lib/jansi-*.jar,终端颜色、进度条全丢,且无法通过settings.xml正常覆盖镜像源
实操建议:
- 运行
which mvn看命令在哪,再跑ls -l $(which mvn)确认是不是软链接到真实安装目录 - Ubuntu/Debian 用户跳过
sudo apt install maven;CentOS/RHEL 8+ 用户避开dnf install maven,它装的是 RPM 构建工具,不是你开发用的 Maven
推荐用 SDKMAN! 装并管理多版本
这是 Java 开发者在 Linux 上最接近“开箱即用”的方式,核心优势是版本隔离、切换无残留、不污染系统 PATH。
实操步骤:
- 执行
curl -s "https://get.sdkman.io" | bash,然后source "$HOME/.sdkman/bin/sdkman-init.sh" - 运行
sdk list maven,找带*的稳定版(如3.9.6),别选4.0.0-alpha类预发布版 - 装指定版本:
sdk install maven 3.9.6,之后mvn -v应显示Apache Maven 3.9.6和匹配的 JDK 版本(JDK 17+ 推荐) - 临时切老版本调试项目:
sdk use maven 3.8.8,关掉终端就自动恢复默认
注意:SDKMAN! 默认只对当前 shell 有效;若想全局生效,确保 ~/.bashrc 或 ~/.zshrc 里有 source "$HOME/.sdkman/bin/sdkman-init.sh",且已执行过 source ~/.bashrc。
手动解压安装时必须对齐三要素
离线环境或安全策略限制时只能手动装,但失败几乎都源于三者没对齐:MAVEN_HOME 路径、PATH 注入位置、文件权限。任一错都会触发 JAVA_HOME not set(即使 java -version 正常)或 tools.jar not found。
实操要点:
- 下载官方
bin.tar.gz包(别下-src或.zip),例如:wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz - 解压到统一路径:
sudo tar -xzf apache-maven-3.9.6-bin.tar.gz -C /opt/ && sudo ln -sf /opt/apache-maven-3.9.6 /opt/maven - 写系统级环境变量:
sudo tee /etc/profile.d/maven.sh <br><code>export MAVEN_HOME=/opt/mavenexport PATH=$MAVEN_HOME/bin:$PATHEOF
再sudo chmod +x /etc/profile.d/maven.sh && source /etc/profile.d/maven.sh - 验证:
echo $MAVEN_HOME必须输出/opt/maven,mvn -v中Maven home必须与之完全一致
不配阿里云镜像源,mvn compile 就可能卡死
默认中央仓库(repo.maven.apache.org)在国内直连极不稳定,常见现象是依赖下载超时、重试 3 次后失败、甚至阻塞整个构建流程。
实操只需改一处:
- 编辑
$MAVEN_HOME/conf/settings.xml(注意是conf目录下的,不是用户家目录的~/.m2/settings.xml) - 在
<mirrors></mirrors>标签下插入以下内容:<mirror><id>aliyunmaven</id><mirrorof>*</mirrorof><name>Aliyun Maven</name><url>https://maven.aliyun.com/repository/public</url></mirror>
- 保存后无需重启,下次
mvn clean compile就自动走阿里云源
注意:如果公司有私有 Nexus/Artifactory,应把 <mirrorof></mirrorof> 改成具体 ID(如 central),避免镜像规则覆盖内部仓库;另外,settings.xml 文件权限需为 644,否则 Maven 会静默忽略它。











