在配置阶段使用Gradle项目扩展属性

时间:2014-03-21 14:24:51

标签: plugins gradle checkstyle build.gradle

编写自定义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扩展名的所有使用放入闭包中,但由于执行阶段的类转换问题,它们无法正确扩展。

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

project.afterEvaluate适合我。
尝试:

project.afterEvaluate {
    project.checkstyle {
      configFile = project.codechecks.checkstyleConfig
    }
}