在编写自定义 Gradle 插件时,如何访问消费 build.gradle
中定义的扩展属性?在自定义插件的配置阶段?
请参阅以下 MWE。
build.gradle
apply plugin: 'codechecks'
codechecks {
checkstyleConfig = '/home/user/checkstyle.xml'
}
CodechecksPlugin.groovy
class CodechecksPlugin implements Plugin<Project> {
void apply(Project project) {
project.extensions.create('codechecks', CodechecksPluginExtension)
project.apply( [ plugin: 'checkstyle' ] )
project.checkstyle {
configFile = project.codechecks.checkstyleConfig
}
}
}
CodechecksPluginExtension.groovy
class CodechecksPluginExtension {
def checkstyleConfig = 'config/checkstyle/checkstyle.xml'
}
通缉行为:
checkstyle
插件使用 build.gradle
中定义的配置文件codechecks
延期。实际行为:
CodechecksPluginExtension
中的默认值正在使用是因为 build.gradle
codechecks
扩展尚未评估。我已经尝试使用
codechecks
的所有用途将插件中的扩展扩展为闭包,但由于执行阶段的类转换问题,它们不会正确扩展。谢谢你的帮助!
最佳答案
project.afterEvaluate 对我有用。
尝试:
project.afterEvaluate {
project.checkstyle {
configFile = project.codechecks.checkstyleConfig
}
}
关于plugins - 在配置阶段使用 Gradle 项目扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561482/