通过 vagrant 运行 mvn 命令
Through vagrant running mvn command
我正在编写用于本地设置自动化的 vagrantfile。
通过 vagrant,我正在为我的应用程序创建 docker 图像,并在虚拟机中 运行 安装它。一切都在一个命令下,即 vagrant up
但是我必须手动做一件事,即使用 mvn clean package
为我的应用程序创建 jar 文件。
我想知道有没有什么方法可以从 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 存储库 - 然后它会从 git 最新文件和 运行 您的 maven 命令中提取。
同样,这是一个简单的示例,您可以根据自己的需要使用它
我正在编写用于本地设置自动化的 vagrantfile。
通过 vagrant,我正在为我的应用程序创建 docker 图像,并在虚拟机中 运行 安装它。一切都在一个命令下,即 vagrant up
但是我必须手动做一件事,即使用 mvn clean package
为我的应用程序创建 jar 文件。
我想知道有没有什么方法可以从 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 存储库 - 然后它会从 git 最新文件和 运行 您的 maven 命令中提取。
同样,这是一个简单的示例,您可以根据自己的需要使用它