2014-03-21 2 views
4

При создании пользовательского плагина 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.gradlecodechecks.

Фактическое поведение: Значение по умолчанию в CodechecksPluginExtension используется, поскольку расширение build.gradlecodechecks еще не оценено.

Я уже пробовал поместить все , использует расширения codechecks в плагинах на закрытие, но они не будут правильно расширяться из-за проблем с классом на этапе выполнения.

Благодарим за помощь!

ответ

5

project.afterEvaluate работает для меня.
Попытка:

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