Ответ 1
использовать
commandLine 'sh', './myScript.sh'
ваш script сам по себе не является самой программой, поэтому вам нужно объявить "sh" как программу и путь к вашему script в качестве аргумента.
У меня есть установка сборки 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'
Я использую gradle 1.10 (требуется Android) в Windows, внутри оболочки Cygwin. Любые идеи?
использовать
commandLine 'sh', './myScript.sh'
ваш script сам по себе не является самой программой, поэтому вам нужно объявить "sh" как программу и путь к вашему script в качестве аргумента.
Более общий способ записи задачи exec, но переносимый для Windows/Linux, если вы вызываете командный файл на PATH:
task myPrebuildTask(type: Exec) {
workingDir "$projectDir/mySubDir"
if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
commandLine 'cmd', '/c', 'mycommand'
} else {
commandLine 'sh', '-c', 'mycommand'
}
}
Это не относится непосредственно к варианту использования для OP (поскольку в рабочем каталоге есть файл script), но заголовок вопроса более общий (и привлек меня сюда), поэтому он может помочь кому-то может быть.
К сожалению, опции commandLine никак не работали для меня, а мой друг нашел другой способ с исполняемым
executable "./myScript.sh"
и полная задача будет
task startScript() {
doLast {
exec {
executable "./myScript.sh"
}
}
}
Я скопировал свой shell scipt в /usr/local/bin
с помощью разрешения +x
и использовал его как еще одну команду:
commandLine 'my_script.sh'