Voici la question: lorsque vous utilisez Vagrant pour un projet Java (ou tout autre projet de langage compilé d'ailleurs), devez-vous compiler dans la VM ou sur l'hôte? Souhaitez-vous également que votre IDE et tous vos outils de développement soient également exécutés à partir de la machine virtuelle ou de l'hôte?
Il ne semble pas très bien défini comment un IDE Java et le processus de compilation / déploiement fonctionnent avec une VM Vagrant. En général, j'ai l'impression que le code est édité sur l'hôte et exécuté sur la machine virtuelle, ce qui fonctionne très bien pour les langages non compilés. D'autres réponses sur Stackoverflow ont laissé entendre que Vagrant est moins utile pour les langages compilés en raison de l'étape de compilation supplémentaire, mais je veux toujours voir ce qui peut être fait.
Certaines choses auxquelles j'ai déjà réfléchi:
Pourquoi compiler sur la VM
- si vous compilez sur l'hôte, java est un autre logiciel à installer
- en cas de compilation sur l'hôte, la version java sur l'hôte doit être mise à jour manuellement avec celle de la VM
- la version java correspondante sur l'hôte peut être indisponible (par exemple, sur un Mac)
Pourquoi avoir IDE sur la VM
- intégration plus étroite entre l'environnement et l'IDE, peut utiliser des raccourcis pour exécuter l'application
- peut connecter le débogueur pour les applications java sans débogage à distance (exécution / débogage en une étape)
Pourquoi compiler sur l'hôte
- temps de compilation plus rapides
- veulent garder la VM aussi proche que possible de ce à quoi ressemble la production
Pourquoi avoir IDE sur l'hôte
- c'est la convention vagrant de modifier le code sur l'hôte et de l'exécuter sur la VM
- meilleures performances de l'interface utilisateur (le transfert X et le VNC sont lents)
Que pensez-vous: dois-je exécuter mon IDE à partir de la VM ou de l'hôte? Dois-je compiler à partir de la machine virtuelle ou de l'hôte?
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.
La déclaration de ce livre (écrite par le créateur de Vagrant) semble plaider contre la compilation dans la VM hôte, non?J'étais intéressé par ce sujet l'année dernière :)
Ma solution est d'avoir une machine vagabonde configurable avec des drapeaux. Par exemple, l'un de ces indicateurs active l'interface graphique du bureau car certains développeurs préfèrent coder sur la machine hôte tandis que d'autres préfèrent avoir un environnement beaucoup plus intégré avec le bureau et l'EDI.
Pour faire face à la lenteur du bureau, vous devez installer un plugin vagrant très utile (ouais ... vagrant a des plugins qui améliorent considérablement l'environnement de développement) de cette manière: vagrant plugin install vagrant-vbguest Ce plugin installera l'ajout d'invité de boîte virtuelle sur chaque invité pour rendez-le utilisable lors de l'utilisation de l'interface virtualbox. Ensuite, pour activer l'interface graphique, modifiez le fichier Vagrant de cette manière:
config.vm.provider "virtualbox" faire | vb | vb.gui = vraie fin
Au lieu d'accélérer les performances du dossier partagé, je suggère d'utiliser rsync: config.vm.synced_folder "./git", "/ home / vagrant / git", tapez: "rsync", rsync__exclude: ".git /" Dans ce manière dont le code source est édité sur l'hôte, puis rsync-ed vers l'invité.
la source