问题来了:当将 Vagrant 用于 Java 项目(或任何已编译的语言项目)时,你应该在 VM 中编译还是在主机上编译?此外,您是否希望您的 IDE 和所有开发工具也从 VM 内部运行,还是在主机上运行?
Java IDE 和编译/部署过程如何与 Vagrant VM 一起工作似乎并没有很好地定义。一般来说,我的印象是代码在主机上编辑,并在 VM 上运行,这对于非编译语言非常有用。Stackoverflow 上的其他答案暗示,由于额外的编译步骤,Vagrant 对编译语言的用处不大,但我仍然想看看可以做什么。
我已经考虑过的一些事情:
为什么要在 VM 上编译
- 如果在主机上编译,java 是另一个需要安装的软件
- 如果在主机上编译,主机上的 java 版本必须手动保持与 VM 上的最新版本
- 主机上相应的 java 版本可能不可用(例如,在 Mac 上)
为什么在 VM 上有 IDE
- 环境和IDE之间更紧密的集成,可以使用快捷方式来运行应用程序
- 无需远程调试即可连接Java应用程序的调试器(一步运行/调试)
为什么要在主机上编译
- 更快的编译时间
- 希望使 VM 尽可能接近生产的样子
为什么主机上有IDE
- 在主机上编辑代码并在 VM 上运行它是 vagrant 约定
- 更好的 UI 性能(X 转发和 VNC 很慢)
你有什么想法:我应该从虚拟机还是主机内部运行我的 IDE?我应该从 VM 内部还是主机内部编译?