通过Jenkins Shell脚本执行时找不到mvn

Sar*_*nni 5 shell maven-3 maven jenkins

我已经在Manage Jenkins->配置系统->环境变量下设置了M2_HOME,并且还在Manage Jenkins->全局工具配置下设置了M2_HOME。

当我使用Maven项目时,它工作正常。
但是,当我使用自由样式项目并执行shell时,它将引发错误“找不到mvn”。

但是当我echo $M2_HOME输入Execute shell时,它显示了正确的路径。
另外,当我尝试时$M2_HOME/mvn compile,它工作正常。
我不知道确切的问题。

错误 [编译]

$ /bin/sh -xe /tmp/jenkins1984982949384007169.sh

+ mvn --version

/tmp/jenkins1984982949384007169.sh: 2: /tmp/jenkins1984982949384007169.sh: mvn: not found

Build step 'Execute shell' marked build as failure

Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 0

执行命令的 shellmvn不知道变量中脚本的路径M2_HOME。shell 只会查看$PATH变量中列出的命令。

所以有两种解决方案:

  • 始终用于"$M2_HOME/mvn"执行 Maven(或者更确切地说,"$M2_HOME/bin/mvn"因为M2_HOME应该指向包含而不是脚本本身的文件夹binlib

  • 更改脚本顶部的路径以使 shell 在正确的位置搜索:

    export PATH="$M2_HOME/bin:$PATH"
    
    Run Code Online (Sandbox Code Playgroud)

    这可能只有当您在脚本中多次运行 Maven 时才有意义。