我正在编写vagrantfile以实现本地设置的自动化。
通过vagrant,我正在为我的应用程序创建docker镜像并在vm中运行它。一切都在一个命令下,即vagrant up
但有一件事我必须手动操作,即使用mvn clean package
为我的应用程序创建jar文件。
我想知道有没有办法从vagrantfile运行mvn命令,这样当我发出vagrant up
时,它应该构建JAR并完成其余的工作。
答案 0 :(得分:2)
正如@Patrick所提到的,shell配置非常合适 - 我个人用于gradle,但同样可以为maven完成。以下是我调用脚本的方法
config.vm.provision "shell", path: "script/run-test.sh", privileged: false, run: 'always'
path
:是我的shell脚本从项目目录privileged
:如果没有设置,root将运行脚本,如果为你的流浪者用户安装了maven,请务必将其设置为false,否则你会看到问题run: 'always'
:这是我的用例(由您决定是否对您有意义),脚本将始终在我运行时运行vagrant up
shell脚本将类似于
#!/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 repo的实例 - 然后它将从git最新文件中提取并运行你的maven命令。
这又是一个简单的例子,可以根据自己的需要使用它