【学习笔记】mac安装maven与idea自带maven
一、安装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相关推荐
- mesos 学习笔记-- mesos安装和配置
2019独角兽企业重金招聘Python工程师标准>>> mesos 学习笔记-- mesos安装和配置 博客分类: 架构 mesos 参考资料: 官方文档:http://mesos. ...
- OracleDesigner学习笔记1――安装篇
OracleDesigner学习笔记1――安装篇 QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一. 前言 Oracle是当 ...
- linux sipp 呼叫转移_SIPp 学习笔记 一 (安装)
SIPp学习笔记一(安装) SIPp可以用来测试各种sip的设备,如终端电话或者proxy,包括功能和性能上的(性能上只能在linux平台下才可以;)具体的描述可以去参照SIPp的官方网站; http ...
- homeassistant mysql_HomeAssistant学习笔记docker安装的ha更换数据库
HomeAssistant学习笔记docker安装的ha更换数据库 用了一段时间之后发现日志和历史打开的速度越来越慢,在论坛里查了半天发现是因为HA官方所用数据库导致,官方也给出了相关文档,https ...
- homeassistant mysql_学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库
学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库 2018-11-15 12:06:58 4点赞 18收藏 3评论 是返乡过年?还是就地过年?最新一届#双面过节指南# ...
- Joomla 学习笔记-----Joomla 安装
Joomla 学习笔记-----Joomla 安装 1.Joomla安装 自己建的web服务器地址:10.170.89.116 下载Joomla 3.2 并解压 解压后的目录: 使用FileZill ...
- ZED相机学习笔记1——安装与配置(Win10 + Python)
系列文章目录 ZED相机学习笔记1--安装与配置(Win10 + Python) 文章目录 系列文章目录 前言 一.ZED2 相机 二.配置ZED相机环境 1.安装CUDA 2.安装ZED-SDK 3 ...
- JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)
JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...
- python数组 swig_学习笔记:安装swig+用SWIG封装C++为Python模块+SWIG使用说明
这段时间一直在摸索swing,用它来封装C++代码来生成python脚步语言.并总结了swing从安装到配置再到代码封装编译生成动态库的整个过程,下面这篇文章都是我在实际的运用中的一些经验总结,分享给 ...
最新文章
- 卸载Notepad++!事实已证明,它更牛逼……
- 7个步骤,帮您轻松实现云迁移
- C#编程尽量使用接口(转)
- 抽象工厂模式设计模式_创新设计模式:抽象工厂模式
- git rebase 合并中间的提交
- leetcode 148. Sort List ----- java
- Memento(备忘录)
- php 如何移动文件,php怎样移动文件
- numpy 随机生成矩阵
- 计算机网络之无线与移动网络-蜂窝网络
- 植物大战僵尸修改笔记(Steam)
- 什么从什么写短句_什么在什么,在什么,什么仿写句子,怎样写
- JavaMail发送QQ邮件
- jboss portal+MySql5 安装使用手册
- Android_水平滚动控件HorizontalScrollView
- 如何设计宝贝详情页提高转化率?
- Win10安装TensorFlow出现过的问题汇总
- AppCan_3 传统的流式布局 与 弹性盒子
- 小米电视不同清晰度图片对比效果
- 万用表测占空比怎么接_如何使用万用表测量频率和占空比?
热门文章
- 你不得不用的MAC软件开发工具软件,个个万里挑一
- 微软演示亚马逊Alexa与微软小娜的合作项目,即将推出测试版本
- Camx process_capture_request流程
- 历史文档——试用期总结
- 金华职业技术学院计算机教研室主任,兰州职业技术学院教研室主任考核办法.PDF...
- 第六节:Maven生命周期和插件
- 人听到坏消息的反应_形容突然间听到坏消息的成语有哪些?
- Python的strftime函数与calendar模块函数
- php逐字输出,premiere字幕怎么逐字出现
- html我的家乡,我的家乡我的家