Gradle - 将文件夹从ABC移动到XYZ

时间:2013-12-31 23:07:32

标签: file gradle directory rename move

目录结构:

PROJECT1 / ABC / FILE1.TXT

我想将上面的ABC文件夹移动/重命名为XYZ(不留ABC)。

如何使用Gradle执行此操作。似乎在Gradle中:对于一个右手的人,用左手搔痒你的右耳,将它从头顶掠过。

我使用了以下示例:但它没有做任何事情:

task renABCToXYZ(type: Copy) << {
   copy {
      from "Project1"
      into "Project1"
      include 'ABC'
      rename ('ABC', 'XYZ')
   }
}

3 个答案:

答案 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")
    }