我正在编写 vagrantfile 以实现本地设置的自动化。通过 vagrant,我正在为我的应用程序创建 docker 映像并在 vm 中运行它。一切都在一个命令下,即vagrant up
但我必须手动做一件事,即使用mvn clean package
.
我想知道有没有办法从 vagrantfile 运行 mvn 命令,这样当我发出时vagrant up
,它应该构建 JAR 并完成剩下的工作。
我正在编写 vagrantfile 以实现本地设置的自动化。通过 vagrant,我正在为我的应用程序创建 docker 映像并在 vm 中运行它。一切都在一个命令下,即vagrant up
但我必须手动做一件事,即使用mvn clean package
.
我想知道有没有办法从 vagrantfile 运行 mvn 命令,这样当我发出时vagrant up
,它应该构建 JAR 并完成剩下的工作。
正如@Patrick 所提到的,shell 配置非常适合 - 我个人用于 gradle,但对于 maven 也可以这样做。这是我如何调用我的脚本
config.vm.provision "shell", path: "script/run-test.sh", privileged: false, run: 'always'
path
: 是我的 shell 脚本从项目目录中的路径privileged
:如果未设置,root 将运行脚本,如果为您的 vagrant 用户安装了 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 latest 文件中提取并运行你的 maven 命令。
同样,这是一个简单的示例,根据您自己的需要使用它