gpt4 book ai didi

gradle - 使用 Gradle 执行命令?

转载 作者:行者123 更新时间:2023-12-03 20:14:36 24 4
gpt4 key购买 nike

我正在尝试使用以下任务使用 gradle 执行命令:

task stopServer(dependsOn: war, type: Exec) << {
commandLine 'pkill -9 tomcat'
}

当我运行它时,我收到以下错误:
* What went wrong:
Execution failed for task ':stopServer'.
> execCommand == null!

当我的任务是这样的:
task stopServer(dependsOn: war) << {
exec {
commandLine 'pkill -9 tomcat'
}
}

我收到此错误:
* What went wrong:
Execution failed for task ':stopServer'.
> A problem occurred starting process 'command 'pkill -9 tomcat''

你能告诉我在这些方法中我哪里出错了吗?

如果以上都不是正确的执行方式,那么请举例说明可能的执行方式。

最佳答案

我相信你正在寻找这个:

task stopServer(dependsOn: war, type: Exec) {
commandLine "pkill", " -9", "tomcat"
}

主要区别非常微妙 - 我只是删除了两个字符。 <<从任务定义中消失了。另一个区别是 commandLine期望可执行文件与参数分开传入。

我删除了 <<因为 gradle 中的一个重要想法: the build lifecycle .有配置和执行阶段(这不是全部,但足以解释这一点)。
<<就像在说 doLast - 它将您传递的闭包添加到此任务的操作(执行阶段)的末尾。所以这意味着在这里,它将尝试像正常一样执行命令(毕竟它是一个 Exec 对象),只有这样,一旦执行,它才会调用您的块 - 块设置 commandLine .所以当它执行时, execCommand真的是空的,直到你的块运行。这是您问题的核心。

没有 << (也称为左移),同一块在配置阶段运行。所以 exec 命令在它运行之前被设置,并且它可以工作。

关于gradle - 使用 Gradle 执行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27091805/

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