2010-06-25 18 views
4

我有兩個目標如何調用非默認的目標Grails的Gant腳本文件

T1一個GANT腳本A - 默認目標 T2 - 另一個目標

即使當我運行

Grails的A T2

默認目標是否運行?我如何運行非默認目標? 我試過grails A --target ='t2'等,但不起作用。

+0

你曾經想出解決辦法?我正嘗試擁有一個腳本文件並能夠運行多個不同的目標 – chrislovecnm 2011-10-10 18:49:32

+0

對不起,我無法弄清楚。很久以前,我不記得我做了什麼。但據我記得,我遵循伯特關於創建另一個劇本的建議。 – Paras 2011-10-18 17:42:38

回答

3

我不確定是否有合適的方法來完成此操作,但您可以編寫第二個腳本(「T2.groovy」)加載此腳本並將該目標設置爲其默認值,例如,

includeTargets << new File("path/to/YourScript") 

setDefaultTarget("t2") 
+0

謝謝伯特。這就是我現在所做的。我創建了兩個腳本T1.groovy和T2.groovy – Paras 2010-06-28 02:51:40

1

這是另一種方法,我把

includeTargets << grailsScript("_GrailsArgParsing") 

剪斷

target(main: "a script") { 
    if(!argsMap.target) 
     throw new IllegalArgumentException("please specify target name with --target option") 

    depends(argsMap.target) 
} 

setDefaultTarget(main) 

您運行帶參數的腳本。該參數是要運行的方法的名稱:)然後執行該方法。

3

對argsParsing方法的一個調整是運行argsMap中的元素並迭代地依賴它們。所以,你可以打電話給你的腳本是這樣的:

grails myScript do-this do-that do-the-other

scriptName = 'myScriptName'  
includeTargets << grailsScript("_GrailsArgParsing") 

剪斷

target(main: "Default Target") { 
    depends(parseArguments) 
    if(argsMap?.size() == 0) { 
    depends(scriptError) 
    } 
    argsMap.each() { 
    if (it.value) { 
     println "${scriptName} building: ${it.value}" 
     depends(it.value) 
    } 
    else { 
     depends(scriptError) 
    } 
    } 
} 

剪斷

target(help: "Print a help message") { 
    println "${scriptName}: possible targets are..." 
    println "\thelp - print this help message" 
} 

target(scriptError: "Print an error and die") { 
    println "${scriptName}: Please specify at least one target name" 
    depends(help) 
    exit 1 
} 
相關問題