2016-04-29 35 views
0

我已經在gradle中編寫了自定義的exec任務,並且我想爲環境變量傳遞運行時參數。如何將運行時間值傳遞給Gradle中的環境變量?

//Set Go Root and Go Path variables 
task setGoPath(type:Exec) { 
environment 'GOROOT', "$root" // Had to pass /usr/local/go 
environment 'PATH', '$PATH:$GOROOT/bin' 
environment 'GOPATH', "$path"//path of my current work directory 
} 

我執行任務一樣gradle setGopath -Proot=/usr/local/go -Ppath=/home/go/sample

但它拋出了類似的錯誤造成的:java.lang.IllegalStateException:將execCommand == NULL!

我試過用單引號代替GOROOT值仍然是一樣的。像我一樣可以/替代環境價值嗎?

回答

0

您正確設置了可執行文件的環境,但是您沒有指定實際運行的可執行文件。

確保指定了可執行文件的路徑executablecommand line

//Set Go Root and Go Path variables 
task setGoPath(type:Exec) { 
    environment 'GOROOT', "$root" // Had to pass /usr/local/go 
    environment 'PATH', '$PATH:$GOROOT/bin' 
    environment 'GOPATH', "$path"//path of my current work directory 
    executable '/path/to/executable/to/run' 
} 
+0

我有一個Go程序來下載所有的依賴項並將其安裝到GOPATH目錄中。我沒有任何特定的可執行文件可以運行。如果我沒有指定一個可執行文件,環境值將被設置爲當前進程的權利? – Poppy

+0

如果您沒有可執行文件,爲什麼使用'Exec'任務? –

+0

@tim_yates我在主src文件夾下有很多子文件夾,我想安裝所有這些可執行文件。所以它不是一條單一的道路。爲了使它更清楚,我試圖執行的Go命令類似於如下命令:commandlaine go build -v src/code.test.com/util/*。go' commandLine'go build -v src/code .test.com/libs/*。go'' 在這種情況下,我只想指定那些環境變量並執行這些命令。這將負責安裝我的依賴關係 – Poppy

相關問題