0

在我的 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 
4

1 回答 1

3

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

为了更好地理解这里发生的事情(这对于理解 Gradle 至关重要),我建议学习Gradle 用户指南中的构建生命周期章节。

于 2013-05-03T10:46:45.817 回答