如何使用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
相关产品推荐
相关产品推荐

