2011-04-12 128 views
0

我有一套groovy腳本(或者我應該說一個groovy應用程序),它具有分層java類似的包結構和腳本名稱相同的類名稱。所有這些都是從主腳本中調用的(就像使用main方法的java類)。我需要調用特定的主腳本,並在需要時(或加載和執行)依次執行所有其他腳本。如何在不編譯的情況下運行一組相關的groovy腳本?

實際上,這可以通過在運行主腳本時將所有腳本編譯和獲取並放入類路徑中來實現,但對於腳本來說這是相當多餘的(想法是讓它在沒有編譯的情況下工作,即使groovy會在幕後做到)

我該如何實現它?

回答

5

Groovy可以很容易地在腳本環境中使用 - 無需編譯步驟。閱讀:

http://groovy.codehaus.org/Running

你可以寫你平時的主要方法等,並調用它,

groovy -cp foo/ foo/MyScript.groovy [arguments] 

或者,如果你在* nix的環境是你可以給它一個家當像這樣,

#!/usr/bin/env groovy 
println("Hello world") 
for (a in this.args) { 
    println("Argument: " + a) 
} 

,並使用./fileName運行它(前提是你已經將其標記爲可執行文件)

+0

您是否嘗試過包裝結構中的第一個建議?可以說你有foo/MyScript.groovy包含main,取決於foo/package/DependencyScript.groovy。您是否在這種情況下嘗試過使用foo/MyScript.groovy? – 2011-04-12 14:53:27

+0

是的 - 像這樣設置類路徑,$ groovy -cp foo/foo/MyScript.groovy或者在同一位置運行groovy可執行文件MyScript.groovy存在。 – lucas 2011-04-12 16:05:54

+0

我的歉意。你的陳述是真實的,似乎我的情況是不尋常的。感謝名單。 – 2011-04-12 17:10:45