使gradle每次设置都执行一次finalizeBy任务(多次)

我在以下情况下遇到了问题:

要连续运行不同的本机测试插件,我动态创建了一些任务来为每个插件适当地准备环境,然后为每个托管依赖项的测试插件创建一个plugin_task

要在设备上开始测试,plugin_task为finalizedBy connectedAndroidTest

例如调用gradle plugin_name_1可以正常工作,它可以准备环境并开始测试。

tasks.register("allTests"){}

name_list.each { test_name ->
   def prepare_dir = tasks.register("${test_name}_Prepare_Dir") {...} 
   def copy_files = tasks.register("${test_name}_Copy_Files") {...}

   def plugin_task = tasks.register(test_name){
     dependsOn prepare_dir
     dependsOn copy_files

     finalizedBy connectedAndroidTest
   }

   allTests.configure {
     dependsOn pluginTask
   }
}

现在,当我尝试运行 allTests 任务时,就会出现问题:

gradle然后正确处理所有为每个插件动态创建的任务“ prepare_dir”,“ copy_files”,所有这些插件均已执行。

但是 connectedAndroidTest 只会在 allTests 的最后执行,因此只能运行一次。但是我需要在每个 plugin_task 的每个末端执行此任务。

gradle的行为是正确的,因为它看到所有plugin_tasks应该由connectedAndroidTest完成,因此将其放在图的末尾。

是否有可能使gradle多次执行此任务? 希望得到帮助。

connectedAndroidTest 任务包装为动态创建的任务,并让plugin_tasks依赖它们是没有帮助的。同样,参数“ rerun-tasks”也无效。

wxc3344 回答:使gradle每次设置都执行一次finalizeBy任务(多次)

那不是Gradle的工作方式。每次Gradle调用,每个任务将执行1次或0次。如果要多次执行同一任务(使用不同的任务输入),则需要多个任务实例,而不是一个。

本文链接:https://www.f2er.com/3107235.html

大家都在问