编写自定义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
扩展名的所有使用放入闭包中,但由于执行阶段的类转换问题,它们无法正确扩展。
感谢您的帮助!
答案 0 :(得分:6)
project.afterEvaluate适合我。
尝试:
project.afterEvaluate {
project.checkstyle {
configFile = project.codechecks.checkstyleConfig
}
}