Вот вопрос: при использовании Vagrant для проекта Java (или любого скомпилированного языкового проекта в этом отношении) следует ли компилировать в виртуальной машине или на хосте? Кроме того, вы бы хотели, чтобы ваша IDE и все инструменты разработки запускались изнутри виртуальной машины или на хосте?
Кажется, не очень хорошо определено , как именно Java IDE и процесс компиляции / развертывания работают с Vagrant VM. Как правило, у меня сложилось впечатление, что код редактируется на хосте и запускается на виртуальной машине, что отлично подходит для некомпилированных языков. Другие ответы на Stackoverflow предполагают, что Vagrant менее полезен для скомпилированных языков из-за дополнительного этапа компиляции, но я все же хочу посмотреть, что можно сделать.
Некоторые вещи я уже продумал:
Зачем компилировать на ВМ
- при компиляции на хосте java - еще одна часть программного обеспечения для установки
- при компиляции на хосте версия Java на хосте должна обновляться вручную с версией на виртуальной машине
- соответствующая версия java на хосте может быть недоступна (скажем, на Mac)
Зачем IDE на ВМ
- более тесная интеграция между средой и IDE, можно использовать ярлыки для запуска приложения
- можно подключить отладчик для Java-приложений без удаленной отладки (одноэтапный запуск / отладка)
Зачем компилировать на хосте
- более быстрое время компиляции
- хотите, чтобы виртуальная машина была как можно ближе к тому, как выглядит производственная среда
Зачем IDE на хосте
- это бродячая конвенция редактировать код на хосте и запускать его на виртуальной машине
- лучшая производительность пользовательского интерфейса (пересылка X и VNC медленные)
Что вы думаете: следует ли мне запускать свою IDE из виртуальной машины или хоста? Должен ли я компилировать из виртуальной машины или хоста?
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.
Заявление этой книги (написанное создателем Vagrant), кажется, выступает против компиляции в хост-виртуальной машине, не так ли?Последний год интересовался этой темой :)
Мое решение - иметь бродячую машину, настраиваемую с помощью флагов. Например, один из этих флагов включает графический интерфейс рабочего стола, потому что некоторые разработчики предпочитают кодировать на хост-машине, в то время как другие предпочитают иметь гораздо более интегрированную среду с рабочим столом и IDE в нем.
Чтобы справиться с медлительностью рабочего стола, вы должны установить очень полезный плагин vagrant (да ... у vagrant есть плагины, которые значительно улучшают среду разработки) следующим образом: vagrant plugin install vagrant-vbguest Этот плагин установит гостевое дополнение виртуального ящика на каждом госте в сделать его пригодным для использования при использовании интерфейса виртуального бокса. Затем, чтобы включить графический интерфейс, отредактируйте Vagrantfile следующим образом:
config.vm.provider "virtualbox" do | vb | vb.gui = истинный конец
Вместо того, чтобы ускорить работу общих папок, я предлагаю использовать rsync: config.vm.synced_folder "./git", "/ home / vagrant / git", введите: "rsync", rsync__exclude: ".git /" В этом способ редактирования исходного кода на хосте, а затем rsync-ed с гостем.
источник