Multithreading 我们如何在gradle的不同线程中运行不同的任务

Multithreading 我们如何在gradle的不同线程中运行不同的任务,multithreading,gradle,build.gradle,Multithreading,Gradle,Build.gradle,我试图找到在不同线程中运行不同任务的解决方案(依赖/独立) 我有一个场景,在gradle中运行另一个任务(测试,取决于上面的服务器)之前,我需要在不同的线程中运行一个任务(在内部运行一个服务器),在第二个任务完成后,我需要终止第一个任务 同样,与上述场景相同,运行另一组服务器/测试/终止任务 task exp{ doFirst{ run1stServerTask.execute() } def pool = Executors.newFixedThreadPool

我试图找到在不同线程中运行不同任务的解决方案(依赖/独立)

我有一个场景,在gradle中运行另一个任务(测试,取决于上面的服务器)之前,我需要在不同的线程中运行一个任务(在内部运行一个服务器),在第二个任务完成后,我需要终止第一个任务

同样,与上述场景相同,运行另一组服务器/测试/终止任务

task exp{
   doFirst{
      run1stServerTask.execute()
   }

   def pool = Executors.newFixedThreadPool(5)
   try {
      def defer = { closure -> pool.submit(closure as Callable) }

      defer {
        run1stTest.execute()
        // After tests are finished, kill 1st server tasks
      }
      defer {
        run2ndServerTask.execute()
      }
      defer {
        run2ndTest.execute()
       // After tests are finished, kill 2nd server tasks
      }

    }
    finally {
      pool.shutdown()
     }
}

希望,所有这些都有意义。。。如果可能的话,我愿意在build.gradle中使用另一种方法。

您从run1stServerTask开始使用哪种服务器?通常,服务器有一个可以启动它们的守护程序模式。然后启动,但不阻塞。这就是至少通过jetty插件可以做到的。一般来说,您应该通过调用
Task.execute()
来避免直接执行任务,而应该使用dependsOn/finalizedby。是的,我读到我们不应该使用execute,我正试图避免它。我正在运行js服务器,让我看看它是否有守护程序模式。我尝试使用dependsOn运行,但它阻止了其他任务。我需要看看finalizedBy提供了什么。问题最终解决了吗?你有没有一个例子来说明这个问题?没有@Opal,还没有。。。仍在寻找答案。只是一个粗略的草图:
run1stServerTask
可以通过在新的、全局定义的
线程中启动一些
main
类来生成服务器。然后所有任务
runTestX
都依赖于
run1stServerTask
。无论您的测试任务组合是什么,gradle都会首先启动服务器。如果随后使用
setDaemon(true)
定义
线程
,则当gradle完成所有测试时,服务器将被终止。