我正在编写 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 命令。
同样,这是一个简单的示例,根据您自己的需要使用它