macOS SDKMAN 管理多版本maven
·
1. 为什么选择 SDKMAN!?
传统的 brew install maven 只能安装最新版,且切换版本极其麻烦。SDKMAN! 专为 JVM 生态设计,支持并行安装多个版本的 Java、Maven、Gradle,并能实现一键秒级切换。
2. 突破网络瓶颈:解决 “INTERNET NOT REACHABLE”
在使用代理(如 Veee)时,终端往往无法直接感知,导致 SDKMAN! 报错。
INTERNET NOT REACHABLE= SDKMAN 连不上它的服务器(国内常见)
2.1 定义终端代理开关(一键开启)
在 ~/.zshrc 中添加以下别名,解决 curl 下载被重置(Connection Reset)的问题:
# 代理快捷开关 (假设端口为 1081)
alias proxyon="export http_proxy=http://127.0.0.1:1081; export https_proxy=http://127.0.0.1:1081; export all_proxy=socks5://127.0.0.1:1081; echo '终端代理已开启'"
alias proxyoff="unset http_proxy; unset https_proxy; unset all_proxy; echo '终端代理已关闭'"
执行 source ~/.zshrc 后,输入 proxyon 即可让终端走代理。
操作过程中,当只保留all_proxy配置时才成功链接网络
2.2 强制关闭健康检查
如果 SDKMAN! 依然提示断网,修改其配置文件:
nano ~/.sdkman/etc/config
将 sdkman_healthcheck_enable 设置为 false。
2.3 确认网络连接
- 用
curl -I https://api.sdkman.io/2可确认
#proxyoff
zwy@weiyedeMacBook-Pro ~ % curl -I https://api.sdkman.io/2
curl: (28) Failed to connect to api.sdkman.io port 443 after 75021 ms: Couldn't connect to server
#proxyon
zwy@weiyedeMacBook-Pro ~ % curl -I https://api.sdkman.io/2
HTTP/1.1 200 Connection established
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api.sdkman.io:443
后来发现和代理无关,被公司网络安全拦截了,连接wifi可以正常访问
zwy@weiyedeMacBook-Pro ~ % curl -I https://api.sdkman.io/2 -x 127.0.0.1:15236
HTTP/1.1 200 Connection established
HTTP/1.1 404 Not Found
Server: nginx/1.19.10
Date: Fri, 03 Apr 2026 01:13:15 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
3. Maven 多版本安装与切换
3.1 查找与安装
开启代理后,即可拉取云端版本列表:
sdk list maven # 查看所有可用版本
sdk install maven 3.8.8 # 安装指定版本
sdk install maven 3.9.6 # 安装最新版本
sdk uninstall maven 3.9.6 #卸载版本:
3.2 版本切换
SDKMAN! 区分“全局默认”和“当前会话”两种模式:
- 全局切换(永久有效):
sdk default maven 3.8.8
- 当前窗口切换(临时有效):
sdk use maven 3.9.6
3.3 验证安装
注意: Maven 的命令行指令是 mvn 而不是 maven。
Bash
mvn -version
4. 进阶:与 IntelliJ IDEA 联动
为了让 IDE 识别 SDKMAN! 管理的版本,需要在 IDEA 设置中进行关联:
- 打开 Settings -> Build, Execution, Deployment -> Build Tools -> Maven。
- 找到 Maven home path,设置为以下路径:
/Users/你的用户名/.sdkman/candidates/maven/current
- 这样当你通过终端执行
sdk default切换版本后,IDEA 会自动同步使用当前选中的 Maven。
5. 常见坑点排查
- SSL_ERROR_SYSCALL: 如果下载时报错 SSL 错误,请确保使用了
socks5协议的环境变量(见上文proxyon配置)。 - Command not found: 确保
~/.zshrc末尾有以下初始化代码:
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
- 清理残留: 如果安装中断导致后续失败,执行
rm -rf ~/.sdkman/tmp/*后再重试。
更多推荐
所有评论(0)