Hier ist die Frage: Wenn Sie Vagrant für ein Java-Projekt (oder ein anderes kompiliertes Sprachprojekt) verwenden, sollten Sie in der VM oder auf dem Host kompilieren? Möchten Sie außerdem, dass Ihre IDE und alle Ihre Entwicklungstools auch innerhalb der VM oder auf dem Host ausgeführt werden?
Es scheint nicht sehr genau definiert zu sein , wie eine Java-IDE und der Kompilierungs- / Bereitstellungsprozess mit einer Vagrant-VM funktionieren. Im Allgemeinen habe ich den Eindruck, dass Code auf dem Host bearbeitet und auf der VM ausgeführt wird, was für nicht kompilierte Sprachen hervorragend geeignet ist. Andere Antworten auf Stackoverflow haben impliziert, dass Vagrant für kompilierte Sprachen aufgrund des zusätzlichen Kompilierungsschritts weniger nützlich ist, aber ich möchte immer noch sehen, was getan werden kann.
Einige Dinge habe ich mir schon überlegt:
Warum auf der VM kompilieren?
- Beim Kompilieren auf dem Host ist Java eine weitere zu installierende Software
- Beim Kompilieren auf dem Host muss die Java-Version auf dem Host manuell mit der auf der VM auf dem neuesten Stand gehalten werden
- Die entsprechende Java-Version auf dem Host ist möglicherweise nicht verfügbar (z. B. auf einem Mac).
Warum IDE auf der VM haben
- Durch eine engere Integration zwischen Umgebung und IDE können Verknüpfungen zum Ausführen der Anwendung verwendet werden
- kann den Debugger für Java-Anwendungen ohne Remote-Debugging verbinden (einstufiges Ausführen / Debuggen)
Warum auf dem Host kompilieren
- schnellere Kompilierungszeiten
- Ich möchte die VM so nah wie möglich an der Produktion halten
Warum IDE auf dem Host haben
- Es ist die übliche Konvention, Code auf dem Host zu bearbeiten und auf der VM auszuführen
- bessere UI-Leistung (X-Weiterleitung und VNC sind langsam)
Was denken Sie: Soll ich meine IDE innerhalb der VM oder des Hosts ausführen? Soll ich aus der VM oder dem Host kompilieren?
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.
Die Aussage dieses Buches (geschrieben von Vagrant Creator) scheint gegen die Kompilierung in der Host-VM zu sprechen, nicht wahr?Ich habe mich im letzten Jahr für dieses Thema interessiert :)
Meine Lösung besteht darin, eine Vagabundmaschine mit Flags konfigurierbar zu haben. Zum Beispiel aktiviert eines dieser Flags die Desktop-GUI, da einige Entwickler lieber auf dem Host-Computer codieren, während andere eine viel stärker integrierte Umgebung mit dem Desktop und der IDE bevorzugen.
Um der Langsamkeit des Desktops zu begegnen, sollten Sie ein sehr nützliches Vagrant-Plugin (ja ... Vagrant hat Plugins, die die Entwicklungsumgebung erheblich verbessern) folgendermaßen installieren: Vagrant-Plugin install vagrant-vbguest Dieses Plugin installiert die virtuelle Box als Gastzusatz für jeden Gast Machen Sie es während der Verwendung der Virtualbox-Schnittstelle verwendbar. Um die GUI zu aktivieren, bearbeiten Sie die Vagrant-Datei folgendermaßen:
config.vm.provider "virtualbox" do | vb | vb.gui = wahres Ende
Um die Leistung des freigegebenen Ordners zu beschleunigen, empfehle ich, rsync: config.vm.synced_folder "./git", "/ home / vagrant / git" zu verwenden. Geben Sie Folgendes ein: "rsync", rsync__exclude: ".git /" So wird der Quellcode auf dem Host bearbeitet und dann mit dem Gast synchronisiert.
quelle