上周六参加 「SpringOne TOUR」 大会,会上大神  Josh Long 现场代码演示 Spring 的响应式设计以及 Bootiful Test

每次都是从0开始,在 start.spring.io 上选择相应要使用的依赖模块之后,在本地IDEA 中打开开始一步步完善功能。演讲的风格、Live Code 中技术细节的推进,中间各种细节展示,内容相当的赞,受益匪浅。

比如在演示「Bootiful Test」的时候,先从我们熟悉的最原始的 Spring 单测写起,中间各种 Mock,空指针问题处理,到最后的简洁。让听众能自然感受到从一大堆代码写单测,过渡到Spring 的 Bootiful 风格的 CONTRACT 单测,对比会更强烈。

自制Spring大神 Josh Long 同款命令行工具,值得拥有_java

在演示过程中,我们见识到了 Josh 的代码编写,双手如飞,相当的流畅。
除此之外,在从 start.sping.io 中生成了 SpringBoot 项目结构文件之后,Josh 在本地命令行直接输入一个命令,瞬间在 IDEA 里把刚才这个项目就打开了,让人相当的惊叹。

会后,我在网上各种搜索那个命令都没找到。确定是个自定义命令无疑了。就琢磨着自己也在本地模仿着写一个。

如何通过 IDEA 启动项目

首先想到的是通过 IDEA 导入项目。在此之前,我一般是通过这样的操作路径:
File -> New -> Module from Existing Sources ...

想要在命令行中导入工程,就必须要命令行可以启动 IDEA。本以为将 IDEA 的可执行文件做为入口,后面传参数,后来各种搜索之后,发现 IDEA 里有一个功能,可以生成命令行可以执行的命令
具体在这里:
Tools -> Create Command-Line Launcher...

选这个之后,将其保存到本地。假设我们保存到本地的命令可执行文件为「idea」
然后在某个 maven 项目目录下,执行 idea pom.xml 
此时,当前项目就会被IDEA做为 project 打开。

命令行解压项目

这一步解决之后。第二是网站下载好的项目压缩包,通过命令解决,这个倒比较好解决,Linux/Mac 命令都直接支持, unzip、tar 都可以直接一个命令解压。

一个命令解压项目并导入 IDEA

有了第一步、第二步之后,这里「解压并打开应用」就是个二合一的操作。
写一个 shell 脚本,将上面的两个命令合并。 Josh 当时的命令是uao,我们也起这样一个名字「uao.sh」。
内容类似这样:

 !/bin/sh
 file_name=$1
 unzip $file_name
 echo "filename: ${file_name%.*}"
 dir_name=${file_name%.*}
idea $dir_name/pom.xml

之后,将上述命令添加到.bash_profile,使其成为环境变量即可,内容如下:
alias uao='cd ~/study && sh uao.sh
之后记得 source 一下,使其生效。

现场演讲时,有一位 Speaker 自诩为「Lazy Programmer」,这种通过自造命令来简化烦琐无谓的操作,让自己的时间用在更有价值的地方,这种 Lazy,是该大力提倡。 :-)