控制Gradle任务执行

时间:2013-05-03 08:30:56

标签: gradle build.gradle

在我的build.gradle脚本中,我有很多任务,每个任务都取决于零个或多个其他任务。

可以调用三个“主要”任务:moduleInstallationbackupFilesrestoreFiles

这是一个问题:我希望能够告诉Gradle要执行哪些任务以及哪些不需要执行。例如,在调用moduleInstallation时,我希望执行所有依赖任务(无论其UP-TO-DATE flag),还是还原任务。我已经尝试改变执行任务的阶段(例如配置阶段,执行阶段......)以及其他一些事情,但所有任务都会继续执行。

我想到的解决方案只是在主要任务中说明,当调用此主要任务(fe moduleInstallation)时,我们将所有非相关任务的UP-TO-DATE flag设置为false ,所以他们不会被处决。这可能吗?

编辑:以下是一个例子:

调用moduleInstallation时(取决于backupFiles),restoreFiles(取决于restoreFromDate)也会被执行。

第一个主要行动

task moduleInstallation << {
    println "Hello from moduleInstallation"
}

task backupFiles {
    doLast {
        println "Hello from backupFiles"
    }
}

第二个主要行动

task restoreFiles {
    println "Hello from restoreFiles"
}

task restoreFromDate {
    println "Hello from restoreFromDate"
}

依赖关系:

moduleInstallation.dependsOn backupFiles 
restoreFiles.dependsOn restoreFromDate

因此,当我在终端中输入gradle moduleInstallation时,我得到以下输出:

Hello from restoreFromDate
Hello from restoreFiles
Hello from backupFiles
Hello from moduleInstallation 

1 个答案:

答案 0 :(得分:3)

第二个代码段必须像第一个代码段一样使用doLast(或其<<快捷方式)。否则,代码是配置代码,无论最终将执行哪些任务,都将始终进行评估。换句话说,这不是在这里执行的restoreFilesrestoreFromDate任务(可以从命令行输出中看出你没有显示的那些),但是(仅)它们的配置代码。

为了更好地了解这里发生的事情(这对理解Gradle至关重要),我建议您研究Build Lifecycle中的Gradle User Guide章节。