groovy 同时运行两个gradle子项目任务

vojdkbi0  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个monorepo设置,如:

monorepo
 build.gradle
 /api
   build.gradle
 /webapp
   build.gradle

我有两个独立的任务来构建和运行开发服务器::api:bootRun:webapp:runDev中的一个或多个。
是否可以让这两个任务并行运行?在运行构建任务bootJar之前,这两个任务彼此不依赖--这超出了范围。
我目前正在尝试使用GPars解决这个问题,但没有效果:

tasks.register("dev") {
    def tasksToRun = ['api:bootRun', 'webapp:runDev']

    GParsPool.withPool { ExecutorService svc -> 
        tasksToRun.each { taskToRun ->
            svc.submit({runDevTaskFromProject(tasksToRun)})
        }
    }
}

def runDevTaskFromProject(String projectTask) {
    try {
        String[] components = projectTask.split(':')
        GradleRunner.create()
            .withProjectDir("$projectDir/" + components[0])
            .withArguments(components[1])
            .forwardOutput()
            .build()
    } catch (Exception e) {
        println "Run Failed " + e
        return
    }
}

有没有更好的方法来实现这一点-或者我需要基于Workers API编写一些东西来促进这一点?

blpfk2vs

blpfk2vs1#

所以事实证明我不需要像我在问题中提出的那样变魔术;下面的代码并行地(或者看起来如此)执行这两个:

tasks.register('dev') {
    dependsOn 'api:bootRun'
    dependsOn 'webapp:runDev'
}

可以使用gradle dev调用

相关问题