如何在 gradle 任务被杀死后 运行 命令?

How to run a command after a gradle task is killed?

我有以下 gradle 工作正常的任务:

abstract class StartDevTask : DefaultTask() {

    private val developmentTasks = listOf(
        "dev-db",
        "run",
        "watch"
    )

    @TaskAction
    fun startDevelopmentTasks() {
        developmentTasks
            .map { ProcessBuilder("./gradlew", it).start() }
            .map {
                Thread { it.waitFor() }.also { it.start() }
            }
            .map { it.join() }

        println("All processes finished")

    }
}

// registering the task over here
tasks.register<StartDevTask>("start-dev") 

然后我可以从命令行调用:

$ ./gradlew start-dev

效果很好,但是当我用 Ctrl+C 终止进程并检查有多少进程还活着时:

$ ps -ax | grep gradlew

我可以看到很多剩余的进程,要删除它们我可以 运行 ./gradlew --stop

我的问题是;在那个任务被杀死后我怎么能 运行 ./gradlew --stop 呢?或者有人可以暗示我有更好的选择吗?

谢谢!!

剩余的进程是 Gradle daemon 个进程。 Gradle 使用这些长期存在的进程通过重用缓存计算来加速未来的构建。

如果你真的不想让他们闲逛,你可以运行 Gradle 加上 --no-daemon 标志告诉它不要离开守护进程 运行宁.

例如:

 ./gradlew start-dev --no-daemon