当前位置: 首页 > 知识库问答 >
问题:

在Gradle中执行shell脚本

蒋泰
2023-03-14

我有一个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中。有什么想法吗?

共有3个答案

黎承颜
2023-03-14

不幸的是,命令行选项在任何方面都不适用于我,我的朋友找到了另一种方法来处理可执行文件

executable "./myScript.sh"

而整个任务将是

task startScript() {
  doLast {
     exec {
          executable "./myScript.sh"
      }
  }
}
子车宏浚
2023-03-14

编写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的用例(因为工作目录中有脚本文件),但问题的标题更通用(并在这里吸引了我),所以它可能会帮助某人。

韦鸣
2023-03-14

使用

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

脚本本身不是程序本身,这就是为什么必须声明“sh”作为程序,并将脚本路径作为参数。

 类似资料:
  • 问题内容: 我想运行一个shell脚本来在构建我的应用程序时更改string.xml中的值。我应该在哪里在gradle中运行脚本,因为其中没有任务。或者,因为我将使用Jenkins构建应用程序,所以我应该在Jenkins服务器上运行脚本吗?请帮帮我。 问题答案: 您可以添加一个运行脚本并使其依赖于构建的步骤。

  • 本文向大家介绍Android 从Gradle执行Shell脚本,包括了Android 从Gradle执行Shell脚本的使用技巧和注意事项,需要的朋友参考一下 示例 Shell脚本是一种非常通用的方法,可以将您的构建扩展到您能想到的任何东西。 例如,这是一个简单的脚本,用于编译protobuf文件并将结果java文件添加到源目录中以进行进一步编译: 此示例的“ pbScript.sh” shell

  • 问题内容: 我正在用geb进行功能测试。 我的应用程序是使用virgo部署的,并使用HSQLDB来存储数据。我想在此工作版本的应用程序上执行测试,但是每次运行webtests时,我都想从空数据库开始。 我写了一个简单的bash脚本 这将删除数据库并重新启动处女座。 但是,当我将其添加到build.gradle任务执行命令时,它永远不会结束。 为什么这样呢?当我在控制台中运行此脚本时,它会迅速返回(

  • 我在Gradle中使用这个问题执行shell脚本作为参考,但是,我无法弄清楚如何让它工作。 这是我的档案: 我myScript.sh #! /bin/sh 回显脚本文件中的Hello world 但是,每当我运行脚本时,我只能看到“来自gradle的Hello world”,而看不到“来自脚本文件的Hello world”。 为什么?

  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 问题内容: 我保留一个名为的shell脚本文件 ,并从构建中执行该文件。 当我执行构建时,它失败。 控制台输出如下: 我在应该保留外壳脚本文件以便执行的位置上感到困惑。 问题答案: 如果看到错误消息,则提示 在工作空间中构建/ var / lib / jenkins / workspace / AutoScript 并根据您的评论将urltest.sh放入 / var / lib / jenkin