gpt4 book ai didi

gradle - Kotlin 上 Gradle 脚本中的命令行问题

转载 作者:行者123 更新时间:2023-12-03 21:41:06 27 4
gpt4 key购买 nike

我正在 Gradle 中编写任务以使用我的 Docker 容器。其中一个将杀死并移除 2 个容器。 Linux 中的常用命令如下所示

docker-compose -f docker-compose.yml kill postgresql redis wap-pattern && docker-compose -f docker-compose.yml rm -f wap-pattern postgresql redis

它工作正常,但在 Kotlin 中我必须使用参数列表,所以在我的代码中它看起来像

tasks.register<Exec>("downAll") {
group = "docker"
commandLine = listOf("docker-compose", "-f", "docker-compose.yml", "kill", "postgresql", "redis", "&&", "docker-compose", "-f", "docker-compose.yml", "rm", "-f", "postgresql", "redis")
}

不幸的是,它根本不起作用,退出时出现错误代码。显然 Kotlin 没有正确解析 &&

那么,我该如何处理这个问题并使我的任务正常进行呢?我能否以某种方式避免在同一个任务主体中使用 & 符号并调用命令行执行 2 次?

最佳答案

不能使用&&,而是可以使用第二种方式在gradle上声明任务类型。

tasks.register("downAll") {
group = "docker"
doLast {
exec {
commandLine = listOf("docker-compose", "-f", "docker-compose.yml", "rm", "-f", "postgresql", "redis")
}
}
doLast {
exec {
commandLine = listOf("docker-compose", "-f", "docker-compose.yml", "kill", "postgresql", "redis")
}
}
}

如果您只是想多次重复相同的命令行,我建议您使用 kotlin 的 repeat功能

tasks.register("downAll") {
doLast {
repeat(2) {
exec {
commandLine = listOf("docker-compose", "-f", "docker-compose.yml", "kill", "postgresql", "redis")
}
}
}
}

关于gradle - Kotlin 上 Gradle 脚本中的命令行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204834/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com