我有一个gradle构建设置,在开始时,我想在一个准备我的环境的脚本中执行一个shellscript。
task build << {
}
task preBuild << {
println 'do prebuild stuff:'
}
task myPrebuildTask(type: Exec) {
workingDir "$projectDir/mySubDir"
commandLine './myScript.sh'
}
build.dependsOn preBuild
preBuild.dependsOn myPrebuildTask
但是,当我通过调用gradle myPrebuildTask
或简单地构建项目来执行任务时,会发生以下错误:
> A problem occurred starting process 'command './myScript.sh''
不幸的是,这就是我得到的一切。
我也试过以下错误。
commandLine 'sh mySubDir/myScript.sh'
我在Windows上使用Gradle 1.10(Android需要),在Cygwin shell中。有什么想法吗?
7条答案
按热度按时间ou6hu8tu1#
使用
你的脚本本身不是一个程序,这就是为什么你必须声明'sh'作为程序,并将脚本的路径作为参数。
lvjbypge2#
一种编写exec任务的更通用的方法,但对于Windows/Linux来说是可移植的,如果你在PATH上调用一个命令文件:
这并没有直接解决OP的用例(因为在工作目录中有脚本文件),但是问题的标题更通用(并吸引了我),所以它可能会帮助一些人。
1szpjjfi3#
不幸的是,使用commandLine的选项在任何方面都不适合我,我的朋友找到了使用可执行文件的其他方法。
全部任务就是
of1yzvn44#
这在我的Android项目中很有效
请参阅这里的解释:How to make System command calls in Java/Groovy?
9lowa7mx5#
下面是从Charlie Lee's answer派生的Kotlin DSL(build.gradle.kts)的解决方案:
使用Java标准 ProcessBuilder API的另一种方法:
有关详细信息,请参阅:
dl5txlt96#
对于Kotlingradle,您可以使用
7ajki6be7#
我将shell scipt复制到
+x
,并将其用作另一个命令: