一、背景
1.1 现状
我们是在公司内部网络里开发,与外网物理隔离。
通常是将代码从svn下载本机,进行编译、开发,通常编译工作比开发工作耗时还要长。
1.2 目前应对办法
后来我们把代码从svn上下载到开发联调服务器上。
开发联调服务是centos 8,虚拟机。
我们发现在服务器上编译快多了。
于是开发流程就变成了这样:
graph TB;
PC提交代码 -> 服务器端更新代码;
服务器端更新代码 -> 服务器端编译;
服务器端编译 -> 服务端打包运行;
二、问题
讲道理,这套办法确实提升了效率;但是既然上了服务器,为啥不直接在服务器上开发?
所以我们的问题是,如何在服务器的命令行下搭建java开发环境。
maven、svn、jdk这些已经安装好了。
vim也有,就是缺少一些IDE的智能提示等能力,有什么路子吗?图形界面不行。
服务器的从 SVN 拉代码,编译到运行这个阶段是可以自动化完成的,只需要引入一个 jenkins (或者任意 CI 系统) 即可更高效率的实现这个这一条龙
然后在配置完之后,你在本地只要通过浏览器触发,或者 IDE 内插件触发一下即可进行拉代码->编译->运行一条龙
这个是比你设想的在远程上直接开发更实际的提升效率。
给你看个我本地的 IDE 的效果图
至于你的本来问题,在服务器开发。我想既然你会问出这个问题,这里建议你仍然在本地进行。好处有:响应速度(废话),还有因为环境在本地,所以可以更加方便的 debug (打断点),做 profile 性能分析等等。虽然这些的确也都可以对一个远程的进程进行,但体验上是不如本地的。
但如果你坚持想要尝试一下直接 ssh 上去开发,那么 vim 配置一个语法提示之类的也的确不是不行,不过相信我,就 Java 开发而言,即使你的 vim 经过各种配置,但比起专业的 IDE 而言也更像是自虐。如果你真的是一个 vim 爱好者,那么不妨安装一个 IDE 的 vim 插件,一样可以享受 vim 的全键盘操控的乐趣。
然后即使如果服务端可以搭 GUI 环境,你也会面临远程带来的响应不及时的问题。因此我推荐开发仍然在本地进行。
(说句大白话的话就是,等到你熟悉了能 hold 住的时候,其实也就不会来抛出这个问题了)