如何在grails gant脚本中调用非默认目标

时间:2010-06-25 16:30:28

标签: grails gant

我有一个有两个目标的gant脚本

t1 - 默认目标 t2 - 另一个目标

即使我跑

grails A t2

默认目标是否已运行?如何运行非默认目标? 我已经尝试过Grails A --target ='t2'等但是没有用。

3 个答案:

答案 0 :(得分:3)

我不确定是否有正确的方法,但您可以编写第二个脚本(“T2.groovy”)来加载此脚本并将该目标设置为默认值,例如。

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

setDefaultTarget("t2")

答案 1 :(得分: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   
}

答案 2 :(得分: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)

使用参数运行脚本。该参数是要运行的方法的名称:)然后该方法被执行。