Aquí está la pregunta: cuando use Vagrant para un proyecto Java (o cualquier proyecto de lenguaje compilado), ¿debería compilar en la VM o en el host? Además, ¿le gustaría que su IDE y todas sus herramientas de desarrollo se ejecutaran también desde dentro de la máquina virtual o en el host?
Parece no estar muy bien definido exactamente cómo funcionan un IDE de Java y el proceso de compilación / implementación con una máquina virtual Vagrant. En general, mi impresión es que el código se edita en el host y se ejecuta en la máquina virtual, lo que funciona muy bien para lenguajes no compilados. Otras respuestas en Stackoverflow han implicado que Vagrant es menos útil para lenguajes compilados debido al paso de compilación adicional, pero aún quiero ver qué se puede hacer.
Algunas cosas que ya he pensado:
Por qué compilar en la VM
- si se compila en el host, Java es una pieza más de software para instalar
- si se compila en el host, la versión de Java en el host debe mantenerse actualizada manualmente con la de la VM
- es posible que la versión de Java correspondiente en el host no esté disponible (por ejemplo, en una Mac)
Por qué tener IDE en la máquina virtual
- integración más estrecha entre el entorno y el IDE, puede utilizar accesos directos para ejecutar la aplicación
- puede conectar el depurador para aplicaciones java sin depuración remota (ejecutar / depurar en un paso)
Por qué compilar en el host
- tiempos de compilación más rápidos
- desea mantener la máquina virtual lo más cerca posible del aspecto de producción
Por qué tener IDE en el host
- es la convención vagabunda de editar código en el host y ejecutarlo en la máquina virtual
- mejor rendimiento de la interfaz de usuario (el reenvío X y VNC son lentos)
¿Cuáles son sus pensamientos? ¿Debería ejecutar mi IDE desde dentro de la máquina virtual o el host? ¿Debo compilar desde dentro de la máquina virtual o desde el host?