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?
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.
A declaração deste livro (escrita pelo criador do Vagrant) parece argumentar contra a compilação no host VM, não?Fiquei interessado neste tópico durante o ano passado :)
Minha solução é ter uma máquina vagrant configurável com sinalizadores. Por exemplo, um deste sinalizador habilita a interface do desktop porque alguns desenvolvedores preferem codificar na máquina host, enquanto outros preferem ter um ambiente muito mais integrado com o desktop e o IDE nele.
Para enfrentar a lentidão da área de trabalho, você deve instalar um plugin vagrant muito útil (sim ... o vagrant tem plugins que melhoram muito o ambiente de desenvolvimento) desta forma: plugin vagrant install vagrant-vbguest Este plugin irá instalar a adição de convidado virtual box em cada convidado para torná-lo utilizável ao usar a interface do virtualbox. Então, para habilitar a interface do usuário, edite o Vagrantfile desta forma:
config.vm.provider "virtualbox" do | vb | vb.gui = true end
Em vez de acelerar o desempenho da pasta compartilhada, sugiro usar rsync: config.vm.synced_folder "./git", "/ home / vagrant / git", digite: "rsync", rsync__exclude: ".git /" Neste forma como o código-fonte é editado no host e, em seguida, rsync-ed para o convidado.
fonte