nohup:无法运行命令`sh`:没有这样的文件或目录

时间:2017-02-08 18:47:27

标签: maven jenkins

我在Jenkins中有以下管道脚本:

node {

  withMaven(globalMavenSettingsFilePath: '/my/path/apache-maven-3.2.2/conf/settings.xml', jdk: 'JDK 1.8.0u92', maven: 'apache-maven-3.2.2', mavenSettingsFilePath: '/my/path/apache-maven-3.2.2/conf/settings.xml') {

    sh '/my/path/apache-maven-3.2.2/bin/mvn clean install'
  }
}

为此,我得到了:

nohup: failed to run command `sh`: No such file or directory
ERROR: script returned exit code -2

为什么会这样?

我确信Maven安装的路径是正确的。当我在没有管道的情况下运行作业时,Maven构建时没有错误,我可以看到它使用相同的路径。

4 个答案:

答案 0 :(得分:3)

这可能是修改PATH的结果。

检查您的脚本和全局属性,并删除对PATH的修改。现在建议使用PATH+extra代替。它仍然会被拾取,但不会破坏实际的PATH

Jenkins的相关问题:https://issues.jenkins-ci.org/browse/JENKINS-41339

答案 1 :(得分:2)

最后,我使用了shell代替sh并且它有效。不知道为什么,他们没有合适的API。

答案 2 :(得分:1)

我建议像这样使用它:

  withMaven(
            maven: 'M3',
            mavenSettingsConfig: 'maven-settings-for-the-task',
            mavenLocalRepo: '.repository') {

        // Run the maven build
        sh "mvn clean install"
    }

除此之外,我不会使用全局settings.xml的绝对路径,也不会使用user settings.xml。我更喜欢使用"配置文件提供程序插件"这样做的好处是可以在Master上使用settings.xml,并且可以在所有节点上使用。

另请参阅文档:https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Maven+Plugin

答案 3 :(得分:0)

当您尝试运行从Windows计算机复制到UNIX计算机的脚本时,会出现此错误。 您需要使用以下命令将格式更改为UNIX: dos2unix ,然后在Unix ./

中运行脚本