Inilah pertanyaannya: Saat menggunakan Vagrant untuk proyek Java (atau proyek bahasa terkompilasi dalam hal ini), haruskah Anda mengompilasi di VM atau di host? Selain itu, apakah Anda ingin IDE dan semua alat pengembangan Anda dijalankan dari dalam VM juga, atau di host?
Tampaknya tidak begitu jelas didefinisikan secara tepat bagaimana Java IDE dan proses kompilasi / penerapan bekerja dengan Vagrant VM. Secara umum kesan saya adalah bahwa kode diedit di host, dan dijalankan di VM, yang berfungsi dengan baik untuk bahasa yang tidak dikompilasi. Jawaban lain di Stackoverflow menyiratkan bahwa Vagrant kurang berguna untuk bahasa yang dikompilasi karena langkah kompilasi tambahan, tetapi saya masih ingin melihat apa yang bisa dilakukan.
Beberapa hal yang sudah saya pikirkan:
Mengapa mengkompilasi di VM
- jika mengkompilasi pada host, java adalah satu lagi perangkat lunak yang harus diinstal
- jika mengkompilasi pada host, versi java pada host harus selalu diperbarui secara manual dengan versi di VM
- versi java yang sesuai di host mungkin tidak tersedia (misalnya, di Mac)
Mengapa IDE di VM
- integrasi yang lebih erat antara lingkungan dan IDE, dapat menggunakan pintasan untuk menjalankan aplikasi
- dapat menghubungkan debugger untuk aplikasi java tanpa debugging jarak jauh (satu langkah run / debug)
Mengapa mengkompilasi pada host
- waktu kompilasi lebih cepat
- ingin menjaga VM sedekat mungkin dengan produksi
Mengapa memiliki IDE di host
- itu adalah konvensi gelandangan untuk mengedit kode pada host dan menjalankannya di VM
- kinerja UI yang lebih baik (X forwarding dan VNC lambat)
Apa pendapat Anda: haruskah saya menjalankan IDE saya dari dalam VM atau host? Haruskah saya mengkompilasi dari dalam VM atau 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.
Pernyataan buku ini (ditulis oleh pencipta Gelandangan) tampaknya menentang kompilasi di VM host, bukan?Saya tertarik dengan topik ini selama setahun terakhir :)
Solusi saya adalah memiliki mesin gelandangan yang dapat dikonfigurasi dengan bendera. Misalnya, salah satu dari tanda ini mengaktifkan desktop gui karena beberapa pengembang lebih suka membuat kode pada mesin host sementara yang lain lebih suka memiliki lingkungan yang jauh lebih terintegrasi dengan desktop dan IDE di dalamnya.
Untuk menghadapi kelambatan desktop Anda harus menginstal plugin vagrant yang sangat berguna (ya ... vagrant memiliki plugin yang sangat meningkatkan lingkungan pengembangan) dengan cara ini: vagrant plugin install vagrant-vbguest Plugin ini akan menginstal tambahan tamu kotak virtual pada setiap tamu untuk membuatnya dapat digunakan saat menggunakan antarmuka kotak virtual. Kemudian untuk mengaktifkan gui, edit Vagrantfile dengan cara ini:
config.vm.provider "virtualbox" lakukan | vb | vb.gui = benar akhir
Alih-alih untuk mempercepat kinerja folder bersama, saya sarankan untuk menggunakan rsync: config.vm.synced_folder "./git", "/ home / vagrant / git", ketik: "rsync", rsync__exclude: ".git /" Di sini cara kode sumber diedit pada host dan kemudian disinkronkan ke tamu.
sumber