【问题标题】:'.' is not recognized as an internal or external command for Gradle command in Jenkins when gradlew script is executed'。执行 gradlew 脚本时,不被识别为 Jenkins 中 Gradle 命令的内部或外部命令
【发布时间】:2021-06-10 15:13:55
【问题描述】:

我尝试使用以下代码为 Jenkins 流水线中的 Gradle 项目运行 SonarQube 分析:

stage('SonarQube') {
  withGradle {
     withSonarQubeEnv('SonarQube Env') { 
       bat "./gradlew sonarqube"
     }
  }
}

Gradle 插件已安装在 Jenkins 中,但出现以下错误:

05:15:05  D:\*\*\*\*\*\*>./gradlew sonarqube 
05:15:05  '.' is not recognized as an internal or external command,

【问题讨论】:

  • 这是在 Windows 主机上吗?如果是,请仅使用 gradlew sonarqube 而不使用 ./

标签: jenkins gradle sonarqube jenkins-pipeline


【解决方案1】:

您的代码中有两处不正确。在 Windows 机器上,您必须:

  1. 在路径中使用反斜杠而不是斜杠 (./command.\command)
  2. 为 Windows 编写的执行脚本(gradlew 是 Unix 脚本,gradlew.bat 是 Windows 脚本)

这段代码应该可以工作:

stage('SonarQube') {
  withGradle {
    withSonarQubeEnv('SonarQube Env') { 
      bat '.\\gradlew.bat sonarqube'
    }
  }
}

Gradle Wtapper 默认提供两个脚本gardlewgradlew.bat。如果您的项目没有gradlew.bat 文件,请在您的Unix 机器上执行./gradlew wrapper。将生成丢失的文件。

顺便说一句。当您使用 Gradlew Wrapper 时,您不需要 Jenkins Gradle 插件。当您想为作业提供 Gradle 安装时,需要该插件,例如:

stage('SonarQube') {
  withGradle {
    withSonarQubeEnv('SonarQube Env') { 
      bat "${tool(name: 'toolId', type: 'gradle')}\\bin\\gradle.bat sonarqube"
    }
  }
}

toolId 必须是 Jenkins 全局工具配置中使用的标识符,例如:gradle-6.Xgradle-6.8.3 等。

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 2018-01-10
    • 2021-09-15
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多