目录结构:
PROJECT1 / ABC / FILE1.TXT
我想将上面的ABC文件夹移动/重命名为XYZ(不留ABC)。
如何使用Gradle执行此操作。似乎在Gradle中:对于一个右手的人,用左手搔痒你的右耳,将它从头顶掠过。
我使用了以下示例:但它没有做任何事情:
task renABCToXYZ(type: Copy) << {
copy {
from "Project1"
into "Project1"
include 'ABC'
rename ('ABC', 'XYZ')
}
}
答案 0 :(得分:21)
您的任务声明错误地合并了Copy
任务类型和project.copy
方法,导致任务无法复制,因此永远不会运行。此外,Copy
不是重命名目录的正确选择。没有用于重命名的Gradle API,但是一些Groovy代码(利用Java的File
API)可以做到。假设Project1
是项目目录:
task renABCToXYZ {
doLast {
file("ABC").renameTo(file("XYZ"))
}
}
从更大的角度来看,将重命名逻辑(即doLast
任务操作)添加到生成ABC
的任务可能更好。
答案 1 :(得分:8)
使用上面给出的解决方案,您可以重命名文件和文件夹,可以移动文件,但不能使用renameTo将文件夹移动到另一个目标。 对于这种情况,你必须使用ant.move:
ant.move(file: sourceDir, tofile: targetDir)
备注:问题是关于重命名文件夹。所以上面的答案是正确的(但问题有点含糊不清)。但也许我的回答对其他用户有帮助,他们可以解决这个问题,并希望移动移动文件夹。
答案 2 :(得分:3)
以下代码会将文件从一个目录移动到另一个目录并重命名文件
task wb764Jar( type: Jar ) {
doFirst{
copy {
from 'deployment/alpha/workbench_alpha7_64.jnlp'
into 'build/libs/jar_merge/developed/alpha64/JNLP-INF/'
rename('workbench_alpha7_64.jnlp', 'APPLICATION.JNLP')
}
}
baseName = 'WorkbenchMaster7_64'
from files(wbLibsDir + '/jar_merge/developed/alpha64/')
from zipTree("$wbJar.archivePath")
}