我在.txt-file
:
java -jar /path/to/something.jar --classpath="/path/to/something/other.jar" --url="something:@127.0.0.1:1234:TEST12" --driver=some.driver update
可以看到使用不同语法的多个参数(-
,--
和/或有和没有""
)。
我尝试了以下代码:
task test(type: Exec) {
workingDir '/path/to/working/dir'
String commandFromFile = new File('/path/to/file/with/command' + 'filewithcommand.txt').getText('UTF-8')
commandLine commandFromFile
}
在Windows平台上,此代码正在运行,但在unix
上却没有。
答案 0 :(得分:1)
正如您在the documentation of the Exec task中所看到的,您应该将命令分成几部分。因此,如果您的参数中没有空格,那么commandLine commandFromFile.split(' ')
应该可以正常工作。如果有,则需要更复杂的方法来分割考虑引号的命令。
或者您更改命令文件的格式,使其每行有一个参数,并使用.readLines('UTF-8')
而不是.getText('UTF-8')
。
我对以下内容并不是100%肯定,但是你可能必须删除引用参数,即使它们包含空格,因为你将参数作为单个实体提供给{{1}调用因此在这里不需要引用转义空格。根据您调用的操作系统和工具,如果有无法处理的引号,它甚至可能会破坏命令。
或者,但这是更糟糕的方法imho,你也可以做类似的事情
commandLine
然后命令处理器进行拆分等等。那里你需要引号和东西。当然,需要确定本例中的windows变量,例如: G。来自系统属性。