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