update studio mac instalar android gradle cygwin

android - studio - Ejecutar shell script en Gradle



update gradle mac (5)

Copié mi shell scipt a /usr/local/bin con el permiso +x y lo usé como un comando más:

commandLine ''my_script.sh''

Tengo una configuración de compilación de gradle al principio de la cual quiero ejecutar un shellscript en un subdirectorio que prepara mi entorno.

task build << { } task preBuild << { println ''do prebuild stuff:'' } task myPrebuildTask(type: Exec) { workingDir "$projectDir/mySubDir" commandLine ''./myScript.sh'' } build.dependsOn preBuild preBuild.dependsOn myPrebuildTask

Sin embargo, cuando ejecuto la tarea llamando a gradle myPrebuildTask o simplemente creando el proyecto, se produce el siguiente error:

> A problem occurred starting process ''command ''./myScript.sh''''

Desafortunadamente, eso es todo lo que tengo.
También he intentado lo siguiente - mismo error.

commandLine ''sh mySubDir/myScript.sh''

Uso Gradle 1.10 (necesario para Android) en Windows, dentro de un shell de Cygwin. ¿Algunas ideas?



Una forma más genérica de escribir la tarea exec, pero portátil para Windows / Linux, si está invocando un archivo de comandos en el 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'' } }

Esto no trata directamente el caso de uso del OP (ya que hay un archivo de script en el directorio de trabajo), pero el título de la pregunta es más genérico (y me dibujó aquí), por lo que podría ayudar a alguien tal vez.


desafortunadamente, las opciones con la línea de comandos no funcionaron para mí de ninguna manera y mi amigo encuentra otra manera con el ejecutable

executable "./myScript.sh"

y la tarea completa sería

task startScript() { doLast { exec { executable "./myScript.sh" } } }


utilizar

commandLine ''sh'', ''./myScript.sh''

su script en sí no es un programa en sí mismo, por eso debe declarar ''sh'' como el programa y la ruta a su script como un argumento.