https://docs.gradle.org/current/userguide/more_about_tasks.html显示了如何通过extends DefaultTask
定义任务属性的示例。
可以使用任务内联定义语法直接定义任务属性,例如:
task collectSqlFiles {
FileCollection sqlFiles
doLast {
sqlFiles = fileTree("$rootDir/function", sqlFilePatt) +
fileTree("$rootDir/maintenance", sqlFilePatt) +
fileTree("$rootDir/monitoring", sqlFilePatt) +
fileTree("$rootDir/view", sqlFilePatt)
}
}
task printSqlFiles {
dependsOn collectSqlFiles
doLast {
// Got: Could not get unknown property 'sqlFiles' for task ':collectSqlFiles'
// of type org.gradle.api.DefaultTask.
collectSqlFiles.sqlFiles.forEach { logger.lifecycle("sqlFile: {}", it) }
}
}
答案 0 :(得分:0)
似乎ExtensionAware
的Gradle域对象本质上具有ExtraPropertiesExtension的名为“ ext”的扩展名。
内联task
是DefaultTask,它实现了ExtensionAware
。
解决方法是:
task collectSqlFiles {
FileCollection sqlFiles
doLast {
// TAKE LOOK to "ext."
ext.sqlFiles = fileTree("$rootDir/function", sqlFilePatt) +
fileTree("$rootDir/maintenance", sqlFilePatt) +
fileTree("$rootDir/monitoring", sqlFilePatt) +
fileTree("$rootDir/view", sqlFilePatt)
}
}
task printSqlFiles {
dependsOn collectSqlFiles
doLast {
collectSqlFiles.sqlFiles.forEach { logger.lifecycle("sqlFile: {}", it) }
}
}
请看官方Dynamic Properties部分。