使用doLast的Gradle同步任务不起作用

时间:2018-07-19 07:45:24

标签: gradle

gradle任务运行良好:

task mySync1(type: Sync) {
    from "source-dir1"
    from "source-dir2"
    into "target-dir"
}

但是如果我添加doLast,它什么也不是(也没有错误):

task mySyncNotWorking(type: Sync) {
    doLast {
        from "source-dir1"
        from "source-dir2"
        into "target-dir-z"
    }
}

正确的是:

task mySyncFixed() {
    doLast {
        project.sync {
            from "source-dir1"
            from "source-dir2"
            into "target-dir-z"
        }
    }
}

我的问题是任务mySyncNotWorking,如果frominto方法在Sync中,它们仍然属于doLast?为什么它们不起作用?

1 个答案:

答案 0 :(得分:2)

  

为什么它们不起作用?

它们确实可以工作,但是之后已执行任务。而且您无法在执行 后对其进行配置。

如果您确实需要在执行阶段期间配置任务,可能是因为您需要使用其他任务的结果(但由于某些原因而无法使用任务输出),只需使用{ {1}}关闭。

在第二个示例中什么也没有发生的原因是对已执行的任务操作的不做任何检查。一项任务什么都不做是完全可以的,这不是错误的原因。