将 linux 上的文件与 Gradle 上的文件串联

Concatenate files on linux with Gradle

这是我当前的 Gradle 任务:

task concat << {
    println "cat $localWebapp/sc*.js > $buildDir/js/sc.concat.js"
    exec {
        commandLine "bash","-c",'cat',"$localWebapp/sc*.js", ">", "$buildDir/js/sc.concat.js"
    }
}

即使我使用 println 打印的命令是正确的(如果我将它粘贴到项目目录的控制台中,它会起作用),该命令也不会构建 sc.concat.js 文件。

这是怎么回事,我该如何解决?

而不是 commandLine,似乎 executable 有效:

task concat << {
    println "cat $localWebapp/sc*.js > $buildDir/js/sc.concat.js"
    exec {
        executable "sh"
        args "-c", "cat $localWebapp/sc*.js > $buildDir/js/sc.concat.js"
    }
}

sh -c 接受一个参数让 script/commands 执行:

commandLine "/bin/sh","-c","cat $localWebapp/sc*.js > $buildDir/js/sc.concat.js"

否则 cat 之后的参数将作为进一步的参数传递给 shell,即 "misinterpreted".