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

标签 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 的所有用途将插件中的扩展扩展为闭包,但由于执行阶段的类转换问题,它们不会正确扩展。

谢谢你的帮助!

最佳答案

project.afterEvaluate 对我有用。

尝试:

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

关于plugins - 在配置阶段使用 Gradle 项目扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561482/

相关文章:

java - GradlecompileJava任务不断失败

java - "Control variable "我 "is modified"

java - 为方法链配置checkstyle?

c# - .NET 应用程序是否有最大程序集数?

java - 是否可以将外部文件/类以编程方式加载到位于工作空间外部的 Eclipse 编辑器中?

android - Android 中的 Aviary SDK 更新

android - Gradle 获取当前包含的文件路径

java - 有没有办法强制 Checkstyle 忽略源代码中的特定警告?

grails - 如何安装和使用Grails测试覆盖率?

java - 在 Java 中创建沙盒插件可扩展应用程序