如何在 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
我有以下 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