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

如何将Gradle文件默认输出目录修改为当前项目目录

原因说明

代码里直接用new File(dirname, filename)构造文件对象时传的是相对路径,Gradle自定义任务执行时默认的工作目录是Gradle守护进程的运行目录(也就是输出里看到的.gradle/daemon/版本号路径),不是当前项目的根目录,所以生成的文件会落到守护进程的目录下。

解决方法

显式用Gradle提供的projectDir属性作为基准路径拼接文件,这个属性固定指向当前项目的根目录,不会受执行环境影响。
修正后的代码如下:

tasks.register('hello')  {
  doLast {
    String dirname = "demo";
    String filename = "hello.txt";

    // 以项目根目录为父路径拼接目标文件
    File targetFile = new File(projectDir, "${dirname}/${filename}")
    // 自动创建不存在的父目录,避免写文件时报路径不存在错误
    targetFile.parentFile.mkdirs()
    
    String abspath = targetFile.getAbsolutePath();
    System.out.println(abspath);
  }
}
补充说明
  • 如果你要生成的文件属于构建产物,更推荐把基准路径换成构建目录:layout.buildDirectory.get().asFile,这样生成的文件会统一落到项目根目录/build路径下,符合Gradle的目录规范,不会污染项目源码目录
  • 不要依赖默认工作目录写相对路径,Gradle守护进程的工作目录会随Gradle版本、启动方式变化,稳定性很差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:09:14