一、安装Maven

1.1 场景一:mac安装Maven

step1: 下载maven

到 maven官网下载压缩包,这里下载 apache-maven-3.8.6-bin.zip 压缩包:

step2: 解压安装

解压maven压缩包,将解压得到的maven文件夹 “apache-maven-3.8.6” 放到合适的路径下,我这里放到 /usr/local/目录下:

/usr/local/apache-maven-3.8.6

安装完成。

step3: 环境配置

打开终端,编辑配置文件:

vim ~/.bash_profile

在.bash_profile文件中添加Maven 路径:

#这里的路径就是step2中放置maven文件夹的路径
export MAVEN_HOME=/usr/local/apache-maven-3.8.6
export PATH=$PATH:$MAVEN_HOME/bin

添加完成后,在键盘上输入冒号然后输入wq,即保存并退出。

再运行以下命令重载配置文件,使其生效:

source ~/.bash_profile

step4: 测试安装结果

在命令行中输入以下命令,如果正常显示Maven版本及安装并配置正确:

mvn -v

step5:配置setting.xml文件

配置本地仓库:setting.xml 中默认本地仓库的路径是 ${user.home}/.m2/repository

可以自定义本地仓库的路径,比如在我们的maven文件夹下定义一个仓库:

<localRepository>/usr/local/apache-maven-3.8.6/my-maven-repository</localRepository>

配置国内镜像加速:在setting.xml文件的mirrors标签中配置镜像源,这里使用的是阿里的远程maven镜像,目前国内大多数都使用它

<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

参考文档:mac安装maven及环境配置

1.2 场景二:让终端所用Maven和IDEA所用Maven版本一致

现象描述:

场景一中,我们自己从 maven官网 下载了maven3.8.6版本,解压安装后,terminal终端使用的mvn命令都是基于这个下载的maven版本的。

然而 IDEA 里一般默认使用其自带的maven版本:

如此一来,terminal终端使用的maven 和 IDEA自带的maven 版本存在不一致,setting.xml和LocalRepository的配置也有可能不一致。

终端和IDEA的maven版本不一致一般也没啥问题,如果想让终端所用Maven和IDEA所用Maven保持一致,看下怎么做。

方案一:让IDEA使用自定义的maven

我们可以将IDEA里默认maven路径修改为自己下载的maven路径: “/usr/local/apache-maven-3.8.6”,使用自定义的maven。

注意:更换“Maven home directory”处的路径时,直接在 Finder 中找不到 /Usr 路径下的文件夹,因为 /Usr 路径被隐藏了,可用快捷键 Cmd+Shift+G ,在弹出的目录中填写/usr相关目标路径即可。

当然,也可以更换idea中自定义的 setting.xml 文件和 local repository 。

方案二:让终端使用IDEA自带的Maven

有些情况下,希望终端使用IDEA自带的maven。则不用去官网下载maven了,直接找到IDEA里使用的自带的Maven的路径:

/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3

修改 ~/.bash_profile文件,将 MAVEN_HOME 的值替换为该路径(参考场景一 step3)

#这里的路径就是IDEA自带的maven路径;
#注意:IntelliJ IDEA.app 中间的空格要加个“\”转译,否则报找不到文件错误
export MAVEN_HOME=/Applications/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3
export PATH=$PATH:$MAVEN_HOME/bin

保存 ,source ~/.bash_profile 使其生效。mvn -v 检查一下:

可见,终端使用的maven也是 idea自带的maven,对应的setting.xml文件就是“/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf”路径下的setting.xml文件。

注意:mvn -v 时可能遇到一个“执行权限不够” 的问题:

/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn: Permission denied

解决方法:给mvn增加执行权限

# a:所有用户 +:增加权限 x:执行权限
chmod a+x  /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn

如果无法识别IntelliJ IDEA.app这个文件夹,可以在空格前加个“\”试试。或者逐层 cd 到最后一层bin目录下,执行该命令:

chmod a+x mvn 

二、相关问题记录

2.1 idea terminal控制台“mvn command not found”

问题的本质就是mac下没有配置maven的环境变量,按照场景一 或 场景二 给终端配置下mvn环境变量。也可参考 文档 。

2.2 idea中自定义maven版本,发现更新资源失败

可能是IDEA2019版与maven3.6.0以上版本不兼容导致,需要替换下maven版本。

2.3 修改mvn JRE所用的java版本

IDEA中,maven的runner所用的java版本可以自定义选择,我们可以选择自己安装的jdk:

终端中,mvn使用mac默认的java版本。 mac默认JAVA_HOME指向的是:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

这个并不是我们自己安装的jdk。 “mvn -v”时可以看到,mvn所用的java版本是来源于上述路径:

想要指定为自己安装的jdk,可以这样做:

  • step1:查看当前机器安装的jdk有哪些版本
  • /usr/libexec/java_home -V

  • step2: 编辑 ~/.bash_profile,修改JAVA_HOME指定为需要设置的版本。这里如下:
JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_151)

注意: 这里 $(/usr/libexec/java_home -v 1.8.0_151) 对应的路径是:

/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

所以JAVA_HOME也可以设置为:

# JAVA_HOME 也可以这样写:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

source ~/.bash_profile 保存修改。使用 java -version 和 mvn -v 看下修改后的java 路径,使用的是自定义的java路径:

2.4 本地仓库配置问题

2.4.1 现象描述:

idea里配置的setting.xml文件和本地仓库如下,常用的jar包都已经下载在本地仓库${usr.name}/.m2/repository 中,使用idea的mvn命令时,无需重复下载,编译速度很快:

同一个project,使用命令行时(mvn clean) , 却在疯狂下载包,看起来并没有使用默认的 “${usr.name}/.m2/repository” 本地仓库:

2.4.2 探查

在project路径下,使用下面的 mvn help 命令查看对应的本地仓库:

 mvn help:evaluate -Dexpression=settings.localRepository | grep -v '\[INFO\]' 

发现所用的本地仓库路径是 “projectPath/~/.m2/repository” ,而非期望中的“${user.home}/.m2/repository ” 或 “~/.m2/repository ”。

换个路径再试试,到 user.home 路径再试试,使用 mvn help 命令查看对应的本地仓库:发现默认的 repository 也是 “当前路径/~/.m2/repository ”

这些localRepository路径看起来都是“当前path + mvn的本地仓库的相对路径”,给每个被查询的目录下都配置了这么个localrepository。

2.4.3 原因分析:

当前终端所用的mvn 是IDEA自带的maven:

在 “/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf”路径下的setting.xml文件中,已经配置了 localrepository 为“${user.home}/.m2/repository”:

这一块不会出问题。

再看下,IDEA maven中所用的setting文件,使用的是定义在“${user.home}/.m2/setting.xml”路径下的setting文件(没有使用“/Applications/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3/conf/setting.xml”路径下的):

在该setting文件中,localRepository路径使用的是相对路径:

<localRepository>~/.m2/repository</localRepository>

通过 “mvn help:effective-settings” 查看到当前生效的 setting信息,发现setting内容是将“${user.home}/.m2/setting.xml” 和 “/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/setting.xml” 两个setting文件合并起来的结果,合并后setting中 localRepository 取的是 “当前路径/~/.m2/repository”。

猜测是“${user.home}/.m2/setting.xml”中 localRepository 设置为相对路径惹的祸,改为绝对路径试试。

2.4.4 解决方案

在“${user.home}/.m2/setting.xml”中,将localRepository改为绝对路径

<localRepository>${user.home}/.m2/repository</localRepository>

改完后,再在project路径下,使用 mvn help 命令查看对应的本地仓库,是符合预期的本地仓库路径,不在与当前project有关系了:

再到 user.home 路径再试试,查看对应的本地仓库:发现默认的 repository 是符合预期的本地仓库路径:

【学习笔记】mac安装maven与idea自带maven相关推荐

  1. mesos 学习笔记-- mesos安装和配置

    2019独角兽企业重金招聘Python工程师标准>>> mesos 学习笔记-- mesos安装和配置 博客分类: 架构 mesos 参考资料: 官方文档:http://mesos. ...

  2. OracleDesigner学习笔记1――安装篇

    OracleDesigner学习笔记1――安装篇   QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一.       前言 Oracle是当 ...

  3. linux sipp 呼叫转移_SIPp 学习笔记 一 (安装)

    SIPp学习笔记一(安装) SIPp可以用来测试各种sip的设备,如终端电话或者proxy,包括功能和性能上的(性能上只能在linux平台下才可以;)具体的描述可以去参照SIPp的官方网站; http ...

  4. homeassistant mysql_HomeAssistant学习笔记docker安装的ha更换数据库

    HomeAssistant学习笔记docker安装的ha更换数据库 用了一段时间之后发现日志和历史打开的速度越来越慢,在论坛里查了半天发现是因为HA官方所用数据库导致,官方也给出了相关文档,https ...

  5. homeassistant mysql_学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库

    学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库 2018-11-15 12:06:58 4点赞 18收藏 3评论 是返乡过年?还是就地过年?最新一届#双面过节指南# ...

  6. Joomla 学习笔记-----Joomla 安装

    Joomla 学习笔记-----Joomla 安装 1.Joomla安装 自己建的web服务器地址:10.170.89.116 下载Joomla 3.2  并解压 解压后的目录: 使用FileZill ...

  7. ZED相机学习笔记1——安装与配置(Win10 + Python)

    系列文章目录 ZED相机学习笔记1--安装与配置(Win10 + Python) 文章目录 系列文章目录 前言 一.ZED2 相机 二.配置ZED相机环境 1.安装CUDA 2.安装ZED-SDK 3 ...

  8. JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)

    JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...

  9. python数组 swig_学习笔记:安装swig+用SWIG封装C++为Python模块+SWIG使用说明

    这段时间一直在摸索swing,用它来封装C++代码来生成python脚步语言.并总结了swing从安装到配置再到代码封装编译生成动态库的整个过程,下面这篇文章都是我在实际的运用中的一些经验总结,分享给 ...

最新文章

  1. 卸载Notepad++!事实已证明,它更牛逼……
  2. 7个步骤,帮您轻松实现云迁移
  3. C#编程尽量使用接口(转)
  4. 抽象工厂模式设计模式_创新设计模式:抽象工厂模式
  5. git rebase 合并中间的提交
  6. leetcode 148. Sort List ----- java
  7. Memento(备忘录)
  8. php 如何移动文件,php怎样移动文件
  9. numpy 随机生成矩阵
  10. 计算机网络之无线与移动网络-蜂窝网络
  11. 植物大战僵尸修改笔记(Steam)
  12. 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
  13. JavaMail发送QQ邮件
  14. jboss portal+MySql5 安装使用手册
  15. Android_水平滚动控件HorizontalScrollView
  16. 如何设计宝贝详情页提高转化率?
  17. Win10安装TensorFlow出现过的问题汇总
  18. AppCan_3 传统的流式布局 与 弹性盒子
  19. 小米电视不同清晰度图片对比效果
  20. 万用表测占空比怎么接_如何使用万用表测量频率和占空比?

热门文章

  1. 你不得不用的MAC软件开发工具软件,个个万里挑一
  2. 微软演示亚马逊Alexa与微软小娜的合作项目,即将推出测试版本
  3. Camx process_capture_request流程
  4. 历史文档——试用期总结
  5. 金华职业技术学院计算机教研室主任,兰州职业技术学院教研室主任考核办法.PDF...
  6. 第六节:Maven生命周期和插件
  7. 人听到坏消息的反应_形容突然间听到坏消息的成语有哪些?
  8. Python的strftime函数与calendar模块函数
  9. php逐字输出,premiere字幕怎么逐字出现
  10. html我的家乡,我的家乡我的家