为什么这个Gradle exec命令在命令提示符下工作时失败?

时间:2015-12-09 01:35:28

标签: gradle build cygwin build.gradle

我有一个gradle构建脚本:

exec {
    commandLine 'cmd', '/c', 'C:/cygwin64/bin/bash', '-lc', "'file /cygdrive/c'"
}

此操作失败,显示以下错误:

/usr/bin/bash: file /cygdrive/c: No such file or directory

但是从命令提示符执行此直接似乎工作正常:

PS D:\s\u\deployment\backend> cmd /c C:/cygwin64/bin/bash -lc 'file /cygdrive/c'
/cygdrive/c: directory

为什么这不适用于我的gradle脚本?关于如何使这项工作的任何建议?

更一般地说,我想要一种通过cygwin执行任意命令的方法。

2 个答案:

答案 0 :(得分:1)

请尝试:

exec {
    commandLine 'cmd', '/c', 'C:/cygwin64/bin/bash', '-lc', 'file /cygdrive/c'
}

"周围没有'file /cygdrive/c'

答案 1 :(得分:1)

如果有人对通过cygwin'运行任意命令感兴趣我结束了:

import org.apache.tools.ant.taskdefs.condition.Os
def isWindows() {
    return Os.isFamily(Os.FAMILY_WINDOWS)
}

def runFromCommandLine (String... args) {
    List<String> arguments
    if (isWindows()) {
        arguments = ['cmd', '/c', 'C:/cygwin64/bin/bash', '--login', '-c', args.join(' ')].toList()
    }
    else {
        arguments = args.toList()
    }

    exec {
        commandLine arguments
    }
}    

// usage
runFromCommandLine('file', '/cygdrive/c')