mac安装不同版本的maven

各位同学入职不同的公司,有的公司使用的maven版本也有不同的,新手通常自己下载固定的文件,点击【下一步】的去安装,需要频繁的去安装卸载。

该篇文章实乃我的经验总结。

1:使用sdkman

Mac + SDKMAN 管理多套 Maven(和 JDK 一套工具,不用额外装别的)

SDKMAN 不光管 Java,原生支持 Maven 多版本切换,跟切换 JDK 操作语法几乎一模一样,完美适配你不同项目需要不同 Maven 版本的需求。 前提:你现在 sdkman 已经正常可用,jdk8、jdk17 都装好了,若各位同学不懂可以看我之前发布的文章。

1、查看可安装的 maven 版本

bash

复制代码
sdk list maven

会列出所有可用 Maven 版本,常用稳定版:

  • 3.8.8:兼容性很强,老项目、JDK8 首选
  • 3.9.9:新版本,适合 JDK17 + 新项目

3.8.8 老项目/JDK8 黄金稳定版

sdk install maven 3.8.8

3.9.9 新项目/JDK17 稳定版

sdk install maven 3.9.9

2:安装多个版本maven的命令

html 复制代码
# 安装 3.8.8(老项目,jdk8用)
sdk install maven 3.8.8

# 安装 3.9.9(新项目,jdk17用)
sdk install maven 3.9.9

这就是提示你安装成功了,我设置默认为3.9.9

3:Maven 版本切换(和 java 命令格式完全一样)

✅只对**当前这个终端窗口临时生效**,关掉终端就复原

sdk use maven 3.8.8

✅设置全局默认版本,新开终端也是这个版本

sdk default maven 3.9.9

4:验证是否生效

mvn -v

5:查看当前生效的 maven

sdk current maven

6:卸载某个 maven 版本

sdk uninstall maven 3.8.8

7:重要坑点(Mac 开发高频踩坑)

  1. sdkman 安装的 maven 路径~/.sdkman/candidates/maven/ 不要自己另外下载 dmg、brew 再装 maven!不要混用 brew 的 maven,会冲突。全程只用 sdkman 管理。

  2. IDEA 里面一定要注意!

终端切换的 JDK/Maven,不会自动同步给 IDEA! IDEA 需要单独设置:

  • File → Project Structure → Project Settings:选择项目 JDK
  • File → Settings → Build,Execution,Deployment → Build Tools → Maven:选择 Maven home 路径,指向 sdkman 下面对应版本的 maven。
  1. maven 本地仓库 settings.xml sdkman 装的 maven 不会自带 settings.xml。 统一配置仓库:建议自己在 ~/.m2/ 下面放一份settings.xml,所有 maven 版本共用一份镜像配置,不用每个 maven 复制一份。

8:修改maven里面的setting配置文件

/Users/你的姓名/.sdkman/candidates/maven/3.9.9/conf/settings.xml

Users/你的姓名/.sdkman/candidates/maven/ 【其实在这里你就可以看见你安装了两个不同的版本maven】

我的习惯是在这个里面的conf文件下载创建多个不同的setting文件,需要那个就改那个名字,例如setting1,2,使用的时候把1 或者2 删除掉就行了。每次都更改文件夹名称

其他的同学不明白可以单独创建文件夹

/Users/用户名称/.m2/settings‑company.xml

/Users/用户名称//.m2/settings‑mine.xml

我喜欢所有的东西写上注释,节省时间。但是有的时候有的地方不要写注释,对你们未来有帮助

相关推荐
mifengxing2 小时前
LeetCode 238 除自身以外数组的乘积|无除法O(n)时间+O(1)空间双解法
java·算法·leetcode
小林敲代码77883 小时前
Spring Boot 3 升级踩坑:aj-captcha 行为验证码底图加载失效
java·spring boot·后端
带刺的坐椅3 小时前
Solon I18n:三种解析器,零样板代码
java·国际化·i18n·solon·多语言
掉鱼的猫4 小时前
Solon I18n:三种解析器,零样板代码
java
程序员阿明4 小时前
spring boot3访问resources下的文件,使得在浏览器url中可以直接访问
java·spring boot·后端
unityのkiven4 小时前
C# 中的奇异递归模板模式:MonoSingleton<T> 的实现
java·开发语言·c#
wuminyu4 小时前
JUC包的AQS与JVM的ObjectMonitor机制对比分析
java·linux·c语言·jvm·c++
霸道流氓气质4 小时前
SpringBoot中使用OAuth2 认证与 JWT Token — 概念、原理与实践
java·spring boot·后端
dogstarhuang4 小时前
Kimi K3 本地部署实战:从 1.56TB 权重到推理服务的完整成本分析
java·人工智能·后端·ai·开源·接口·程序员创富
就不掉头发4 小时前
C++函数模板
java·开发语言·c++