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