是否可以从doLast内部执行任务?

时间:2019-07-19 09:40:31

标签: gradle

我有以下内容:

    constructor( private changeDetect: ChangeDetectorRef )

    overlay_imageUploads(){
    if (!(this.changeDetect as ViewRef).destroyed) {
          this.changeDetect.detectChanges()
          // do other tasks
          this.files = [];
          this.overlay_uploadImage = false;
      }
    }

如何从task copyToLib(type: Copy) { from configurations.runtime into "$buildDir/output/lib" doLast { copyOpcThirdParty() } // this doesnt get executed } task copyOpcThirdParty(type: Copy) { from "$projectDir/libs/opc/thirdparty" into "$buildDir/output/lib/thirdparty/" } 呼叫copyOpcThirdParty

我尝试了copyToLib.doLast.execute()等,均无济于事。

不受支持吗?

1 个答案:

答案 0 :(得分:1)

在Gradle中,任务不直接执行。相反,您可以注册依赖项,然后Gradle决定以哪种顺序执行哪些任务以实现您指定的任务的执行(通常通过命令行)。在较早版本的Gradle中,您可以直接在任务上调用execute(),但绝对不要使用它。

执行任务时,必须始终完全完成一个任务的执行,直到可以执行另一任务为止。任务的执行始终包括运行所有doFirst闭包,所有内部任务操作和所有doLast闭包。

对于您的特定示例,可以使用finalizedBy方法。它告诉Gradle,每当特定任务运行时,此后的某个时候还必须运行另一个特定任务:

copyToLib.finalizedBy copyOpcThirdParty