如何在子项目任务结束时一次执行Gradle任务

n3u*_*ino 5 multi-project gradle

我正在处理以下项目结构

Project
|-Subproject1
|-Subproject2
|build.gradle
|settings.gradle
Run Code Online (Sandbox Code Playgroud)

子模块包含在根项目的中,settings.gradle并在build.gradle根项目中进行配置。

我有3件事要做

  1. build (每个子项目都有这个)
  2. deploy (这是每个子项目需要独立工作的打包机制)
  3. finalizeDeployment (仅需调用一次)

我希望能够打电话

$gradle deploy< -所有子项目得到部署并最终确定被调用一次,在结束

$gradle Subproject1:deploy <-Subproject1被部署并完成被调用

build.gradle

Project
|-Subproject1
|-Subproject2
|build.gradle
|settings.gradle
Run Code Online (Sandbox Code Playgroud)

n3u*_*ino 5

它的工作方式如下

configure(subprojects) {

    task build << {
        println "Do Build " + project.name
    }

    task deployPrepare(dependsOn: build)<<{
            println 'deploy ' + project.name
    }

    task deployFinalize(dependsOn: deployPrepare)<<{
        parent.deployFinalize.execute()
    }
}

task deployFinalize {

    doLast {
        println 'Finalize Deployment'
    }
}

deployFinalize.dependsOn(subprojects.deployPrepare)
Run Code Online (Sandbox Code Playgroud)

控制台输出为gradle subproject1:deployFinalize

Do Build subproject1
deploy subproject1
Finalize Deployment
Run Code Online (Sandbox Code Playgroud)

控制台输出为gradle deployFinalize

Do Build subproject1
deploy subproject1
Do Build subproject2
deploy subproject2
Finalize Deployment
Run Code Online (Sandbox Code Playgroud)