如何创建和使用gradle任务工厂函数
如何创建创建函数的函数,或者我应该请求调用它如何创建和使用gradle任务工厂函数,gradle,Gradle,如何创建创建函数的函数,或者我应该请求调用它 // cant use this method see comment tagged ERROR further down def webRollbackFactory(parentTask) { tasks.create(name: "webRollback.${parentTask.name}", type: Copy, dependsOn: [webBackup]) { onlyIf { patentTask.state.failu
// cant use this method see comment tagged ERROR further down
def webRollbackFactory(parentTask) {
tasks.create(name: "webRollback.${parentTask.name}", type: Copy, dependsOn: [webBackup]) {
onlyIf { patentTask.state.failure != null }
from(zipTree("${webPublishPath}/../${getWebBackupName()}")) { include '*' }
into webPublishPath
doLast {
println "\nwebRollback.${parentTask.name}.doLast"
}
}
}
// this task which do the same works with out problems
task webRollback_webPublish(type: Copy) {
onlyIf { webPublish.state.failure != null }
from(zipTree("${webPublishPath}/../${getWebBackupName()}")) { include '*' }
into webPublishPath
doLast {
println "\nwebRollback.webPublish.doLast"
}
}
task webPublish(type: com.ullink.Msbuild) {
dependsOn msbuild, webBackup
projectFile = "${webPublishProjectDir}/${webPublishProjectFileName}"
targets = ['Publish']
parameters = [PublishProfile: webPublishProfile]
configuration = BUILD_TYPE
parameters.maxcpucount
doLast {
println '\nwebPublish.doLast'
}
// ERROR: fails with: Could not find method webRollbackFactoy() for arguments [task ':webAccessTest'] on task ':webAccessTest' of type org.gradle.api.tasks.Exec.
//finalizedBy webRollbackFactory(webPublish)
// the version that works
finalizedBy webRollback_webPublish
}
我使用的是Gradle 4.8出现该错误的原因是,正在计算的闭包没有找到主文件中声明的函数 尝试将函数更改为闭包作为variabe引用,然后它就可以工作了。
webRollbackFactory={parentTask->
创建(名称:“webRollback.${parentTask.name}”,类型:Copy,dependsOn:[webBackup]){
onlyIf{patentTask.state.failure!=null}
从(zipTree(${webPublishPath}/./${getWebBackupName()}”){include'*}
进入webPublishPath
多拉斯特{
println“\nwebRollback.${parentTask.name}.doLast”
}
}
}