Как вызвать не заданную по умолчанию цель в скрипте Grails Gant
У меня есть сценарий Ганта А с двумя целями
t1 - цель по умолчанию t2 - другая цель
Даже когда я бегу
Граальс А т2
цель по умолчанию запущена? Как я могу запустить цель не по умолчанию? Я пробовал Grails A --target='t2' и т. Д., Но не работает.
3 ответа
Я не уверен, есть ли правильный способ сделать это, но вы можете написать второй скрипт ("T2.groovy"), который загружает этот скрипт и устанавливает эту цель в качестве значения по умолчанию, например
includeTargets << new File("path/to/YourScript")
setDefaultTarget("t2")
Подход к 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
}
Это еще один подход, который я выбрал
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)
Вы запускаете скрипт с параметром. Этот параметр является именем метода для запуска:) Этот метод затем выполняется.