gpt4 book ai didi

macos - Gradle exec commandLine无法按预期工作

转载 作者:行者123 更新时间:2023-12-03 05:00:05 25 4
gpt4 key购买 nike

我目前正在OSX中从事Gradle项目
我的.gradle文件中的函数如下所示

ext.MyFunction = {

def fastlaneCommand = [
'fastlane',
'-version'
]

def stdout = new ByteArrayOutputStream()

exec {
ignoreExitValue true
standardOutput stdout
workingDir PathsModel.instance.GetDeployerRoot()
commandLine fastlaneCommand
LOG.WARN("YOUR CLI COMMAND: " + commandLine)
}
println "Output:\n$stdout"
}

然后在“build.gradle”中
task jenkins_deploy() {
doFirst {
MyFunction()
}
}

是时候执行CommandLine
输出:
W A R N I N G:  YOUR CLI COMMAND: [fastlane, -version]

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':jenkins_deploy'.
> A problem occurred starting process 'command 'fastlane''

我知道faSTLane在我的路径中是“$ HOME / .faSTLane / bin”,这是可执行文件所在的位置。如果我只是打开Terminal并输入

'fastlane -version'



从任何目录开始,faSTLane工具都会启动并执行其应做的事情。

我想我的问题是:
我打开终端并手动输入命令,然后要求Gradle使用'exec'做完全相同的事情之间可能有什么区别?
我是否误解了“exec”和“commandLine”的实际作用?

关于“faSTLane”的一些信息是它使用的是Ruby,我对此并不了解。这可能证明是相关的。

编辑:我已经尝试将faSTLaneCommand数组中的第二个元素“版本”化为“版本”和“-版本”

编辑2(实际解决方案):尽管下面标记的答案是一个确定的解决方法,但是 Actual solution解决方案具有充分的理由来说明为什么会这样以及它为什么起作用。

最佳答案

TL; DR

我想应该是:

['sh', 'fastlane', '-version']

说明:

我没有链接,但是如果省略 sh,它将作为位于当前目录(或配置为第二个参数的目录)中的脚本执行。如果给它加上 sh前缀,它将使用shell和$ PATH变量执行。

关于macos - Gradle exec commandLine无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310443/

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