Oto pytanie: jeśli używasz Vagrant do projektu Java (lub dowolnego projektu w języku skompilowanym w tym zakresie), czy powinieneś kompilować na maszynie wirtualnej, czy na hoście? Czy chciałbyś, aby Twoje IDE i wszystkie narzędzia programistyczne były uruchamiane również z maszyny wirtualnej, czy na hoście?
Wydaje się, że nie jest dokładnie zdefiniowane , jak środowisko Java IDE i proces kompilacji / wdrażania działają z maszyną wirtualną Vagrant. Ogólnie mam wrażenie, że kod jest edytowany na hoście i uruchamiany na maszynie wirtualnej, co świetnie sprawdza się w językach nieskompilowanych. Inne odpowiedzi w Stackoverflow sugerują, że Vagrant jest mniej przydatny w przypadku języków kompilowanych z powodu dodatkowego kroku kompilacji, ale nadal chcę zobaczyć, co można zrobić.
Kilka rzeczy, które już przemyślałem:
Po co kompilować na maszynie wirtualnej
- jeśli kompilujesz na hoście, java to jeszcze jedno oprogramowanie do zainstalowania
- jeśli kompilujesz na hoście, wersja java na hoście musi być ręcznie aktualizowana z wersją na maszynie wirtualnej
- odpowiednia wersja java na hoście może być niedostępna (powiedzmy na komputerze Mac)
Po co mieć IDE na maszynie wirtualnej
- ściślejsza integracja między środowiskiem a IDE, można używać skrótów do uruchamiania aplikacji
- można podłączyć debugger do aplikacji java bez zdalnego debugowania (jednoetapowe uruchamianie / debugowanie)
Po co kompilować na hoście
- szybsze czasy kompilacji
- chcą, aby maszyna wirtualna była jak najbliżej tego, jak wygląda produkcja
Po co IDE na hoście
- konwencja włóczęgów polega na edytowaniu kodu na hoście i uruchamianiu go na maszynie wirtualnej
- lepsza wydajność interfejsu użytkownika (przekazywanie X i VNC są wolne)
Co myślisz: czy powinienem uruchomić moje IDE z maszyny wirtualnej czy z hosta? Czy powinienem kompilować z poziomu maszyny wirtualnej czy hosta?
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.
Oświadczenie tej książki (napisane przez twórcę Vagranta) wydaje się przemawiać przeciwko kompilacji na hoście VM, prawda?Interesował mnie ten temat przez ostatni rok :)
Moim rozwiązaniem jest posiadanie włóczęgi konfigurowalnej z flagami. Na przykład jedna z tych flag włącza interfejs GUI na pulpicie, ponieważ niektórzy programiści wolą kodować na maszynie hosta, podczas gdy inni wolą mieć znacznie bardziej zintegrowane środowisko z pulpitem i znajdującym się w nim IDE.
Aby stawić czoła powolności pulpitu, powinieneś zainstalować bardzo przydatną wtyczkę vagrant (tak ... vagrant ma wtyczki, które znacznie poprawiają środowisko programistyczne) w następujący sposób: vagrant plugin install vagrant-vbguest Ta wtyczka zainstaluje dodatek gościa wirtualnego boxu na każdym gościu uczynić go użytecznym podczas korzystania z interfejsu virtualbox. Następnie, aby włączyć GUI, edytuj plik Vagrantfile w następujący sposób:
config.vm.provider "virtualbox" do | vb | vb.gui = prawdziwy koniec
Zamiast przyspieszyć działanie folderu współdzielonego, sugeruję użycie rsync: config.vm.synced_folder "./git", "/ home / vagrant / git", wpisz: "rsync", rsync__exclude: ".git /" W tym sposób, w jaki kod źródłowy jest edytowany na hoście, a następnie zsynchronizowany z gościem.
źródło