通过vagrant运行mvn命令

时间:2016-05-12 04:49:09

标签: maven vagrant vagrantfile vagrant-provision

我正在编写vagrantfile以实现本地设置的自动化。 通过vagrant,我正在为我的应用程序创建docker镜像并在vm中运行它。一切都在一个命令下,即vagrant up 但有一件事我必须手动操作,即使用mvn clean package为我的应用程序创建jar文件。

我想知道有没有办法从vagrantfile运行mvn命令,这样当我发出vagrant up时,它应该构建JAR并完成其余的工作。

1 个答案:

答案 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命令。

这又是一个简单的例子,可以根据自己的需要使用它