【问题标题】:Gradle - Move a folder from ABC to XYZGradle - 将文件夹从 ABC 移动到 XYZ
【发布时间】:2014-01-18 18:51:59
【问题描述】:

目录结构:

Project1/ABC/file1.txt

我希望将上面的 ABC 文件夹移动/重命名为 XYZ(不要将 ABC 留在那里)。

我如何使用 Gradle 来做到这一点。似乎在 Gradle 中:对于惯用右手的人来说,它是用左手搔痒右耳,将其擦过头顶。

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

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

【问题讨论】:

    标签: file gradle directory rename move


    【解决方案1】:

    您的任务声明错误地结合了Copy 任务类型和project.copy 方法,导致任务没有可复制的内容,因此永远不会运行。此外,Copy 不是重命名目录的正确选择。没有用于重命名的 Gradle API,但是一些 Groovy 代码(利用 Java 的 File API)就可以了。假设Project1是项目目录:

    task renABCToXYZ {
        doLast {
            file("ABC").renameTo(file("XYZ"))
        }
    }
    

    纵观全局,最好将重命名逻辑(即doLast 任务操作)添加到产生ABC 的任务中。

    【讨论】:

    • 这是我目前在 doLast 所做的。谢谢皮特。
    • 其实我的意思是,我正在做你在 doLast 任务动作中所说的。顺便说一句,重命名就像你上面说的那样,谢谢。
    • 只是一个警告:正如 java.io.File.renameTo 的 javadoc 所说,该方法取决于底层系统 - 如果 Gradle/Groovy 使用 JDK 类。正如Matthiasjava.nio.file.Files 所说,一个更好的方法似乎是使用ant.move
    【解决方案2】:

    使用上面给出的解决方案,您可以重命名文件和文件夹,您可以移动文件,但不能使用 renameTo 将文件夹移动到另一个目的地。 对于这种情况,您必须使用 ant.move:

     ant.move(file: sourceDir, tofile: targetDir)
    

    备注:问题是关于重命名文件夹。所以上面的答案是正确的(但问题有点模棱两可)。但也许我的回答对于遇到这个问题并想要移动文件夹的其他用户有帮助。

    【讨论】:

    • 谢谢!我正在使用 renameTo() 将文件夹“ABC”移动/重命名为文件夹“XYZ”,覆盖目标的内容,但它没有覆盖..但 ant.move 似乎工作得很好:)
    • 好的,谢谢!在看到您的帖子之前,我不明白为什么 rename 对目录不起作用。
    • Gradle 5.6.2 中好像没有move() 方法
    • 为了完整起见,如果您使用新路径 + 旧名称作为目标参数,重命名也会移动文件夹:file("x/myDir").renameTo(file("y/myDir")) 将目录 myDir 从其父目录 x 移动到 (现有)父母y
    【解决方案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")
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      相关资源
      最近更新 更多