【问题标题】:Gradle: execute tasks sequentially in some taskGradle:在某个任务中顺序执行任务
【发布时间】:2018-12-25 18:44:35
【问题描述】:

我有一个库,其中包含 3 个库模块和 1 个示例模块。在部署任务之前,我想执行一些其他任务。在命令行中它看起来像这样:./gradlew -x:example:clean -x:example:check -x:example:uploadArchives clean check :androidLib:assembleRelease uploadArchives

我想编写 gradle 任务来顺序执行除示例模块之外的所有模块的所有任务。我能做到的:./gradlew deployAll。我该怎么做?

我尝试这样做:

task deployAll {
    doLast {
        subprojects {
             if(it.plugins.withType(com.android.build.gradle.AppPlugin)) return
             it.tasks.getByName('clean').execute()
             it.tasks.getByName('check').execute()
             ...
        }
    }
}

execute() 已被弃用,它只执行第一个任务并忽略任何任务。

【问题讨论】:

    标签: gradle groovy android-gradle-plugin


    【解决方案1】:

    您可以在 gradle 任务中使用 dependsOn 以确保您的任务以正确的顺序运行

    task task1{
        dependsOn task2
        //Task one code
    }
    
    task2{
        dependsOn task3
        //task 3 code
    }
    
    task3{
        //task3 code
    }
    

    所以在这个例子中,如果你调用task1,首先会执行task 3,然后是task2,最后是task 1,但你只需要调用task1。

    【讨论】:

      【解决方案2】:

      您可以创建另一个任务并设置其他任务的依赖项

      task deployAll {
        dependsOn tasks.getByName('clean')
        dependsOn(tasks.getByName('check'))
      }
      

      为了确保订单添加把这个放在某个地方

      tasks.getByName('check').mustRunAfter(tasks.getByName('clean'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多