Я пытаюсь написать правило задачи для создания ряда задач, которые проверяют различные местоположения хранилища svn. Вот мое правило:Не удалось создать правило задачи Gradle с задачей Exec
tasks.addRule("Pattern: svnCheckout<Classifier> - Checks out the indicated svn repo") { String taskName ->
if(taskName.startsWith('svnCheckout')) {
task(name: taskName, type: Exec) {
String classifier = taskName - 'svnCheckout'
String svnDir = svnRepoUrl //defined elsewhere
switch(classifier) {
case 'SourceTrunk':
svnDir += 'branches/CleanBuild/trunk'
break
case 'AutoInstaller':
svnDir += 'Tools/AutoInstaller'
break
case 'ContentAutomation':
svnDir += 'Tools/ContentAutomation'
break
case 'InternalTools':
svnDir += 'Tools/Internal'
break
default:
throw new GradleException("Invalid svnCheckout classifier '$classifier'")
}
String svnCommand = "svn co $svnDir --trust-server-cert"
//commandLine 'cmd', '/c', "$svnCommand"
commandLine 'cmd', '/c/', "echo 'Task created'"
workingDir = "$workspace"
}
}
}
Затем я пытаюсь запустить задачу 'svnCheckoutSourceTrunk' с этой командой:
gradlew -Pworkspace="." svnCheckoutSourceTrunk
, который завершается с ошибкой
FAILURE: Could not determine which tasks to execute.
* What went wrong:
Task 'svnCheckoutSourceTrunk' not found in root project 'GradleScripts'.
* Try:
Run gradlew tasks to get a list of available tasks.
BUILD FAILED
Любой увидеть, что Я поступаю неправильно? Я помещал несколько операторов println
вокруг первых нескольких строк, и выполнение проходит мимо оператора if, но оно не попадает в объявление задачи.
Спасибо. Кажется странным, что это проблема. Не будет ли «name: taskName» первым аргументом быть функционально эквивалентным? Что там происходит? – Max
Что вы подразумеваете под «функционально эквивалентным»? Все перегрузки метода 'Project # task' имеют в качестве первого позиционного параметра String. Как я уже сказал, я не уверен, почему ваш синтаксис не дает ошибку, поэтому я поднял http://issues.gradle.org/browse/GRADLE-3065. –
А, я запутал его с перегрузками tasks.create(). Неважно. – Max