Aqui está a pergunta: ao usar o Vagrant para um projeto Java (ou qualquer projeto de linguagem compilada), você deve compilar na VM ou no host? Além disso, você gostaria que seu IDE e todas as suas ferramentas de desenvolvimento fossem executados de dentro da VM também ou no host?
Parece não estar muito bem definido exatamente como um IDE Java e o processo de compilação / implantação funcionam com uma VM Vagrant. Geralmente, minha impressão é que o código é editado no host e executado na VM, o que funciona muito bem para linguagens não compiladas. Outras respostas no Stackoverflow implicaram que o Vagrant é menos útil para linguagens compiladas por causa da etapa extra de compilação, mas ainda quero ver o que pode ser feito.
Algumas coisas já pensei:
Por que compilar na VM
- se estiver compilando no host, o java é mais um software a ser instalado
- se estiver compilando no host, a versão do java no host deve ser mantida manualmente atualizada com a da VM
- a versão java correspondente no host pode estar indisponível (digamos, em um Mac)
Por que ter IDE na VM
- integração mais estreita entre o ambiente e IDE, pode usar atalhos para executar o aplicativo
- pode conectar o depurador para aplicativos java sem depuração remota (uma etapa de execução / depuração)
Por que compilar no host
- tempos de compilação mais rápidos
- deseja manter a VM o mais próximo possível da aparência de produção
Por que ter IDE no host
- é a convenção do vagrant editar o código no host e executá-lo na VM
- melhor desempenho da IU (encaminhamento X e VNC são lentos)
O que você acha: devo executar meu IDE de dentro da VM ou do host? Devo compilar de dentro da VM ou do host?