0
我想寫一個任務規則來創建一系列檢查各種svn存儲庫位置的任務。這是我的原則:無法創建一個執行任務的Gradle任務規則
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。 –
啊,我把它與task.create()的重載混淆了。沒關係。 – Max