You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CircleCI报错./gradlew不存在 如何配置子目录Gradle任务执行

CircleCI 子目录运行Gradle任务配置方法

问题根因

触发./gradlew: No such file or directory报错的原因很简单:官方circleci/gradle@2.2.0 orb默认在仓库根目录查找Gradle wrapper启动脚本,你的Gradle项目存放在仓库子文件夹中,默认路径匹配不上就会执行失败。

最优配置方式

不用自己重写job逻辑,这个orb原生提供了working_directory参数,直接指定Gradle项目根目录的绝对路径就行。配置完成后,orb内置的代码校验、依赖缓存、测试执行、结果上报全流程都会自动在指定目录运行,不需要手动加cd命令切路径。

CircleCI拉取代码后默认的工作根路径是~/project,如果你的Gradle项目(就是直接存放gradlew、build.gradle、settings.gradle文件的那层目录)在仓库下的backend/service子文件夹,修改后的完整配置如下:

version: 2.1

orbs: 
  gradle: circleci/gradle@2.2.0

workflows:
  checkout-build-test:
    jobs:
      - gradle/test:
          working_directory: ~/project/backend/service

如果后续要加构建、打包等其他Gradle任务,给对应orb任务传入相同参数即可,比如加构建任务:

workflows:
  checkout-build-test:
    jobs:
      - gradle/test:
          working_directory: ~/project/backend/service
      - gradle/build:
          working_directory: ~/project/backend/service
          tasks: clean build

路径校验方法

如果不确定路径填的对不对,可以临时加个前置步骤,打印当前路径和文件列表,能看到gradlew文件就说明路径正确:

- gradle/test:
    working_directory: ~/project/backend/service
    pre-steps:
      - run: pwd && ls -la

避坑提醒

  • 别用cd 子目录 && ./gradlew test这种手动切目录的写法,orb内置的wrapper合法性校验、依赖缓存步骤还是会在默认根目录跑,不仅依然可能报错,还会导致缓存不生效,构建速度变慢
  • working_directory必须填到Gradle项目根目录,也就是直接包含gradlew文件的层级,不要填到src/main/java这类源码子目录,不然还是找不到wrapper文件

内容的提问来源于stack exchange,提问作者Avraham Cohen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:46:00