2016-08-23 41 views
0

我具有低於命令在一個.txt-file如何使用gradle中的文件執行多個參數的命令?

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事實並非如此。

回答

1

正如你在the documentation of the Exec task中看到的那樣,你應該把你的命令分解成它的部分。如果你的論點中沒有空格,那麼commandLine commandFromFile.split(' ')應該可以工作。如果你有,你需要一個更復雜的方式來分割引號的命令。

或者您更改命令文件的格式,以便每行有一個參數,並且您使用.readLines('UTF-8')而不是.getText('UTF-8')

我不是100%地肯定以下,但它可能是因爲你還必須刪除周圍參數的引用,即使它們包含空格,因爲你提供的參數作爲單一實體的commandLine呼叫,因此需要這裏沒有引用轉義空間的引用。根據您調用的操作系統和工具,如果有引號無法處理,甚至可能會中斷該命令。

另外,但那是糟糕的方法恕我直言,你也可以這樣做

if (windows) { 
    commandLine 'cmd', '/c', commandFromFile 
} else { 
    commandLine 'sh', '-c', commandFromFile 
} 

然後在那裏命令處理器確實分裂等。那裏你當然需要報價和東西。這個例子中的窗口變量當然需要確定, G。來自系統屬性。

相關問題