执行mvn命令,报错如下:
-Dmaven.multiModuleProjectDirectory system property is not set.
本来linux 上装的maven是A版本,但是现在需要改成B版本了。安装解压,配置环境变量后,使用mvn -v 发现,仍然是A版本。
后来发现每次source完,PATH变量都会新增一下,问题就出在这里,(linux配置环境变量出错)如下图:
导致这个问题的原因是,在配置环境变量的时候,是这么配置的
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
应该把 $PATH 放到环境变量的最后,这样就就算会覆盖,也会用前边的配置覆盖后边的配置
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
(理论上就算$PATH放到前面,source完也不应该出错的,但这个底层原因不懂了,这里也不研究了)
但是还有一个问题,就是现在环境变量已经错了,该怎么办?
我这边就是,先配置成这样
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:$M2_HOME/bin:$JAVA_HOME/bin
source完以后,再设置成
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
突然发现我好傻逼啊,自己半天没看出来。感谢评论里“东北小狐狸”的说明
JAVA_HOME和M2_HOME是变量,在export PATH时,应该使用$符进行取值
例:
export JAVA_HOME=/opt/jdk
export M2_HOME=/opt/maven_repo
export PATH=$JAVA_HOME/bin:$M2_HOME:$PATH
export的作用是将此变量作为多用户线程可见的环境变量,如果不export,则仅当前登录用户可见,且子线程无法接收到此变量。
原创文章,欢迎转载,转载请注明出处!