-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.[ERROR] Maven execution terminated abnormally (exit code 1)解决方法

今天给同事的Mac配置JAVA项目IDEA开发环境的时候遇到了一个问题:
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.[ERROR] Maven execution terminated abnormally (exit code 1)
Check了电脑的M2_HOME系统环境变量,都没有错误,于是在IDEA中File->Maven->Runner的VM options中增加配置:
-Dmaven.multiModuleProjectDirectory=$M2_HOME
保存解决问题。

IDEA出现[FATAL_ERROR] Cannot start Maven: Project JDK is not specified. 的解决办法

最近在给一个同事的Mac配置JAVA项目的开发环境的时候,启动项目IDEA报错:
[FATAL_ERROR] Cannot start Maven: Project JDK is not specified. <a href=’#’>Configure</a>
那么估计就是IDEA的JDK没有配置好,打开IDEA的preference,找到Maven->Runner,发现JRE项目的配置是“Use Project JDK (not defined yet)”,而那个Internal JRE的版本太低,所以我们需要配置Project JDK,配置的方法是点击顶部的File->Project Structure…->左边的“Project”->Project SDK
jdk
这时候现实的应该是“<No SDK>”,点开看看有没有其他选项,如果没有就点击New…->JDK,选择你的JDK目录到“Contents/Home”下。如果有,就选择配置好的例如:“1.7”。
以上操作之后,问题就解决了。

git切换分支保存修改的代码的方法

最近在一个原有的项目上做一次非常大的改版,底层的数据库做了很大的变化,跟现在的版本无法兼容。现在的工作除了开发最新的版本之外还要对原来的版本做例行的维护,修修补补。于是有了在两个分支之间游走切换的问题,最新改版的代码在分支new上,旧版本的代码在分支old上,我在new上开发了一半,忽然有人给了我一个改进的需求,于是我要切换回old去修改代码。在这个场景下,我摸索了三种方法:

及时commit代码

在new分支上把已经开发完成的部分代码commit掉,不push,然后切换到old分支修改代码,做完了commit,所有分支互不影响,这是一个理想的方法。

 

使用git stash

有时候写了一半的JAVA代码,都还不能编译通过的,就被叫去改另一个分支的bug了。

在new分支上的时候在命令行输入:

git stash

或者

git stash save “修改的信息"

这样以后你的代码就回到自己上一个commit了,直接git stash的话git stash的栈会直接给你一个hash值作为版本的说明,如果用git stash save “修改的信息”,git stash的栈会把你填写的“修改的信息”作为版本的说明。

接下来你回到old分支修改代码完成,你又再回到new分支,输入:

git stash pop

或者

git stash list
git stash apply stash@{0}

就可以回到保存的版本了。git stash pop的作用是将git stash栈中最后一个版本取出来,git stash apply stash@{0}的作用是可以指定栈中的一个版本,通过git stash list可以看到所有的版本信息:

stash@{0}: On order-master-bugfix: 22222
stash@{1}: On order-master-bugfix: 22222

然后你可以选择一个你需要的版本执行:

git stash apply stash@{0}

这时候你搁置的代码就回来了。

 

用IDE工具的shelve的功能

有一些IDE工具提供了shelve的功能,shelve的意思是“将…搁在一边”,即把还没写完的代码先搁在一边。我开发都是使用jetbrains公司的IDEA和PhpStorm,它们就提供了shelve的功能,方法:

首先在IDE的底部找到“Changes”,点开会有local的选项卡,选中你要搁置的代码,点击右键,选择“Shelve Changes”,在提交的输入框中输入你的注释,以便回来的时候识别你需要的版本,点击“Shelve Changes”键即可。这时选项卡上会多一个“Shelf”的选项卡,里面就有你搁置的代码。

这时候你可以去old分支修改代码,改完了之后回到new分支,到“Shelf”选项卡下选择你要恢复的代码或者版本,点击右键选择“Unshelve Changes”,你的搁置的代码就回来了。

IDEA集成开发工具Debug Cannot start Maven问题解决方法

最近接手了一个新的JAVA项目,在IDEA中配置好了Debug了,点击Debug,在控制台报错如下:

[FATAL_ERROR] Cannot start Maven: No valid Maven installation found. Either set the home directory in the <a href="#">configuration dialog</a> or set the M2_HOME environment variable on your system.

我以前的项目都可以正常使用Maven,这个项目居然不能使用了,我的~/.zshrc一切配置都正常,真是奇怪了。后来去stackoverflow上查了下,原来是Mac的Shell环境变量未必能够被GUI应用读到。解决方法如下:

sudo vim /etc/launchd.conf  //一般Mac上默认是没有这个文件的

在这个文件中加上你的M2_HOME的配置:

setenv M2_HOME /usr/local/maven/apache-maven-3.2.1

然后你一定要重新启动Mac这个配置才会生效,重启之后Debug就正常了。