Gradle-复制任务完成操作后如何执行某些操作?

时间:2018-08-23 12:43:14

标签: gradle

我有一个任务:

task myCopy(type: Copy) {
    from 'from.txt'
    into 'into.txt'
    doLast {
        //Read write 'into.txt'
    }
}

它总是打印FileNotFoundException,我发现doLast块是在复制操作完成之前执行的,所以我如何在复制时用into.file读(或写)操作完成了吗?

1 个答案:

答案 0 :(得分:1)

这里您没有以正确的方式使用复制任务:“ into”属性是将文件复制到的目标目录,而不是目标文件名。 执行脚本时,应该在项目的根目录中创建一个目录“ input.txt”,并将文件“ from.txt”复制到该目录中,这不是您所期望的,我想这是导致您 FileNotFoundException

如果您要复制/重命名文件,则应使用CopyTask中的“重命名”方法,如此处所述:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:rename(java.lang.String,%20java.lang.String)

示例:

task myCopy(type: Copy) {
    from './source-file.txt'
    into './output-dir'
    rename ( 'source-file.txt', 'input.txt')
    doLast{
        println "Is file already copied when executing doLast ? ==>  "+   project.file("./output-dir/input.txt").exists()
    }
}

这应该输出:

$ gradle myCopy
> Task :myCopy
Is file already copied when executing doLast ? ==>  true