Gradle 控制梯度任务执行

Gradle 控制梯度任务执行,gradle,build.gradle,Gradle,Build.gradle,在build.gradle脚本中,我有很多任务,每个任务都依赖于零个或多个其他任务 可以调用三个“主要”任务:moduleInstallation,备份文件和恢复文件 问题是:我希望能够告诉Gradle哪些任务需要执行,哪些任务不需要执行。例如,调用moduleInstallation时,我希望执行所有依赖的任务(不管它们的最新标志如何),但不执行还原任务。我尝试过改变任务执行的阶段(例如,配置阶段、执行阶段等)和其他一些事情,但所有任务都会继续执行 我想到的一个解决方案就是在主任务中声明,当调

在build.gradle脚本中,我有很多任务,每个任务都依赖于零个或多个其他任务

可以调用三个“主要”任务:
moduleInstallation
备份文件
恢复文件

问题是:我希望能够告诉Gradle哪些任务需要执行,哪些任务不需要执行。例如,调用
moduleInstallation
时,我希望执行所有依赖的任务(不管它们的
最新标志如何),但不执行还原任务。我尝试过改变任务执行的阶段(例如,配置阶段、执行阶段等)和其他一些事情,但所有任务都会继续执行

我想到的一个解决方案就是在主任务中声明,当调用此主任务时(即
moduleInstallation
),我们将所有非相关任务的
最新标志设置为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 


第二个代码段必须使用
doLast
(或其
),第二个代码段必须使用
doLast
(或者它的
告诉Gradle要执行哪些其他任务的方法是建立正确的任务依赖关系。为什么你只想执行任务依赖关系的一个子集?@Peter:如上所述,依赖关系是正确的。只是我想让一个脚本给用户3个可能的主要操作(每个现有的任务和依赖项都不同)它们之间没有任何关系。因为它们之间没有任何关系,所以它们不应该在需要另一个主操作时执行。听起来您的构建脚本有问题。请提供一个最小的自包含示例。我更新了问题。这有帮助吗?没有帮助,因为它不允许复制他回答了这个问题。告诉Gradle要执行哪些其他任务的方法是建立正确的任务依赖关系。为什么你只想执行任务依赖关系的子集?@Peter:如上所述,依赖关系是正确的。只是我想让一个脚本给用户3个可能的主要操作(每个现有的任务和依赖项都不同)它们之间没有任何关系。因为它们之间没有任何关系,所以它们不应该在需要另一个主操作时执行。听起来您的构建脚本有问题。请提供一个最小的自包含示例。我更新了问题。这有帮助吗?没有帮助,因为它不允许复制这个问题很有道理。所以我必须让所有任务都使用
所有应该运行的代码,如果任务执行时需要进入
doLast{…}
我现在才注意到:如果我使用
doLast
一些任务在无事可做(无输入)时也会打印
最新的
。为所有任务设置
UpdateWhen{false}
应该是不必要的。无论如何,这是一个不同的问题。有意义。因此,我必须让所有任务使用
所有在任务执行时应该运行的代码,如果需要进入
doLast{…}
我现在才注意到:如果我使用
doLast
一些任务在无事可做(无输入)时也会打印
最新的
。为所有任务设置
UpdateWhen{false}
应该是不必要的。无论如何,这是一个不同的问题。