Azure Pipelines 无法识别自托管代理中的 mvn

Azure Pipelines does not recognize mvn in self hosted agent

我已经在自己的代理上安装了 maven,当我从 putty 运行 命令 mvn -v 时,我得到了这个输出:

Maven home: /opt/maven Java version: 1.8.0_292, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.15.0-1071-azure", arch: "amd64", family: "unix"

有了这个输出我确保 maven 安装正确 并且环境变量设置正确。

但是当我从 azure devops 对该代理执行 运行 maven 任务时,我收到 以下错误消息:

##[error]Unhandled: Unable to locate executable file: 'mvn'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.

我只尝试 运行 执行命令 mvn -v 的 azure devops bash 任务 我收到以下错误

mvn: command not found

感谢您的支持,因为我确信 Maven 已正确安装和配置,但由于某些原因 azure devops 无法识别这些命令

我尝试了很多方法,但 none 奏效了。

最后我想到从 azure devops 分配环境变量。

首先,我尝试创建一个 bash 任务来 运行 命令 export M2_HOME=/opt/maven 但它没有用。

然后我尝试了 azure 自己的说明:echo "##vso[task.setvariable variable=M2_HOME]/opt/maven" 并且工作正常。

具体的解决办法是在maven任务之前创建两个任务,分配所有需要的环境变量,如下:

任务 运行 以下命令:

注意: A分配在单个任务中不起作用,因为第二个任务使用在第一个任务中分配的变量。 如果是定义一个变量并在同一个任务中使用它是行不通的。