通过 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 命令中提取。

同样,这是一个简单的示例,您可以根据自己的需要使用它