2016-05-12 3 views
1

Я работаю над написанием vagrantfile для автоматизации локальной настройки. Через бродягу, я создаю изображение докера для своего приложения и запускаю его внутри vm. Все находится под одной командой, т. Е. vagrant up Но одна вещь, которую я должен сделать вручную, то есть создать файл jar для моего приложения, используя mvn clean package.Через бродячую команду mvn running

Мне интересно, есть ли способ запустить команду mvn из vagrantfile, так что, когда я выпущу vagrant up, он должен построить JAR и выполнить остальную часть работы.

+1

Вы могли бы решить эту проблему с помощью [бродячую инициализацию] (https://www.vagrantup.com/docs/provisioning/). Возможно, устройство обеспечения оболочки подходит вам. – Patrick

ответ

2

как @Patrick упоминает, что предоставление оболочки является хорошей подгонкой - я лично использую для градации, но то же самое можно сделать для maven. Вот как я называю мой сценарий

config.vm.provision "shell", path: "script/run-test.sh", privileged: false, run: 'always' 
  • path: это путь для моего сценария оболочки из каталога проекта
  • privileged: если не установлен, то корень будет запускать скрипт, если Maven установлен для вашего брандмауэр, убедитесь, что он установлен в false, иначе вы увидите проблему
  • run: 'always': это мой прецедент (до вас, чтобы выбрать, если это имеет смысл для вас), сценарий всегда будет работать, когда я запустил vagrant up

сценарий оболочки будет что-то вроде

#!/bin/bash 

if [ -d "/home/vagrant/test" ];then 
    cd /home/vagrant/test && git pull 
    cd /home/vagrant/test && maven compile 
    cd /home/vagrant/test && maven deploy 
    ..... 

else 
    git clone <your project> /home/vagrant/test 
fi 

Это пример, в основном первый раз, когда я создать экземпляр будет клонировать Git репо - тогда он будет тянуть из GIT последних файлов и запустить команду Maven.

Опять же, это простой пример, использовать его для собственных нужд

+0

Спасибо Анри за пояснение. – Sam

Смежные вопросы