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?
Shared folders incur a heavy performance penalty within the virtual machine when there is heavy I/ O, so they should only be used for source files. Any compilation step, database files, and so on should be done outside the shared folder filesystem inside the guest filesystem itself.
La declaración de este libro (escrita por el creador de Vagrant) parece argumentar en contra de la compilación en la máquina virtual anfitriona, ¿no?Estuve interesado en este tema durante el último año :)
Mi solución es tener una máquina vagabunda configurable con banderas. Por ejemplo, uno de estos indicadores habilita la interfaz gráfica de usuario del escritorio porque algunos desarrolladores prefieren codificar en la máquina host, mientras que otros prefieren tener un entorno mucho más integrado con el escritorio y el IDE en él.
Para enfrentar la lentitud del escritorio, debe instalar un complemento vagrant muy útil (sí ... vagrant tiene complementos que mejoran enormemente el entorno de desarrollo) de esta manera: complemento vagrant install vagrant-vbguest Este complemento instalará la adición de invitado de caja virtual en cada invitado a hágalo utilizable mientras usa la interfaz virtualbox. Luego, para habilitar la interfaz gráfica de usuario, edite el Vagrantfile de esta manera:
config.vm.provider "virtualbox" hacer | vb | vb.gui = final verdadero
En lugar de acelerar el rendimiento de la carpeta compartida, sugiero usar rsync: config.vm.synced_folder "./git", "/ home / vagrant / git", escriba: "rsync", rsync__exclude: ".git /" En este forma en que se edita el código fuente en el host y luego rsync-ed con el invitado.
fuente