为什么 gradle 不运行我的 shell 脚本?

Dav*_* T. 5 bash shell groovy android gradle

我几乎可以肯定我忽略了一些东西。

我有一个带有build.gradle文件的 android gradle 项目。在这里,我指定了任务:

task doSomething(type: Exec) {
    println("okay clearly you have got to be getting in here")
    commandLine 'sh /Users/dzt/Desktop/create_a_file_on_desktop.sh'
}
Run Code Online (Sandbox Code Playgroud)

那根本不运行。shell 文件的字面意思是:

#!/bin/sh
echo "hi" > /Users/dzt/Desktop/i_am_a_byproduct.txt
Run Code Online (Sandbox Code Playgroud)

我运行chmod u+x它,所以它是可执行的(我在常规 bash shell 上仔细检查)。

我还尝试使用 groovy 命令:

"cd ../ && sh /Users/dzt/Desktop/create_a_file_on_desktop.sh".execute()
Run Code Online (Sandbox Code Playgroud)

这也不起作用。我有点难住了。我没有看到输出文件。但是,我确实在 gradle 控制台中看到了我的打印语句。

这里发生了什么?

** 编辑 **

好吧,我更深入地研究了它 ->

cd ../根本不起作用。为什么是这样?我需要使用相对路径,至少相对于该目录

Dav*_* T. 1

cd由于某种原因,Gradle 不允许命令。有些命令无法使用 groovy 运行。

相反,我cd在 shell 脚本中使用了它。这似乎工作得很好。