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

如何使用Gradle复制Java包并保留原有项目目录结构?

你的现有配置会直接把cfg/resources目录下的内容写入目标路径的cfg/resources目录,不会保留上层的目录层级,实际效果如下:
实际复制效果

你需要的保留完整cfg/resources层级的预期效果如下:
预期目录结构

可参考以下几种可行方案实现:

  • 方案1:调整源路径根目录,自动保留相对层级
    这种写法最简洁,Gradle会自动保留完整目录结构到目标路径:

    task copyProjectResources(type: Copy) {
      // 替换为你实际的目标项目根路径
      destinationDir = file("path/to/target/project")
      from("cfg") {
        include "resources/**"
      }
    }
    
  • 方案2:手动拼接目标路径
    如果你需要保持源路径为cfg/resources不变,可以通过eachFile手动指定文件的目标存放路径:

    task copyProjectResources(type: Copy) {
      destinationDir = file("path/to/target/project")
      from("cfg/resources")
      eachFile { file ->
        file.path = "cfg/resources/${file.name}"
      }
      includeEmptyDirs = false
    }
    

如果是多项目构建场景下的跨项目复制,可以直接引用对应项目的路径,示例如下:

// 子项目中配置,从根项目复制资源到当前子项目
task copyFromRoot(type: Copy) {
  destinationDir = project.projectDir
  from(rootProject.file("cfg")) {
    include "resources/**"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:42:03