当通过Jenkins shell脚本执行时,提示未找到mvn。

7
我已经在“管理Jenkins ->配置系统 ->环境变量”和“管理Jenkins ->全局工具配置”下设置了M2_HOME。在使用maven项目时,一切正常。但是,在使用自由风格项目并执行shell时,它会抛出一个"mvn未找到"的错误。但是,当我在执行shell中使用 echo $M2_HOME时,它显示了正确的路径。同时,当我尝试使用 $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

M2_HOME 不被 shell 解释器所解释 - PATH 被解释。 - Stefan Hanke
尝试将其设置在bash配置文件中,并使用source ~/.bash_profile命令加载它。 - anshul Gupta
我也尝试过这个.. Stefananushal - Saranya Unni
1个回答

0

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

因此,有两个解决方案:

  • 在执行 Maven 时始终使用 "$M2_HOME/mvn"(或者更好的是使用 "$M2_HOME/bin/mvn",因为 M2_HOME 应该指向包含 binlib 的文件夹,而不是脚本本身)。

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

    export PATH="$M2_HOME/bin:$PATH"
    

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接