Как я могу применить плагин Gradle к себе? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть плагин Gradle, который кодифицирует набор проверок для выполнения на кодовой базе.Я хотел бы, чтобы сам плагин подвергался таким же проверкам.

Попытка 1

Я нашел часть решения здесь , которое по существупытается использовать buildSrc для создания плагина, который затем может быть применен из основного проекта.

Это дает мне ошибку, замеченную кем-то другим:

No signature of method: GradlePlugins.buildscript() is applicable for argument types: (GradlePlugins$_run_closure1) values: [GradlePlugins$_run_closure1@2e7cad0f]

Попытка2

Это было адаптировано из второго предложения в теме:

apply plugin: new GroovyScriptEngine(
        [ file('src/main/java').absolutePath,
          file('src/main/groovy').absolutePath,
          file('src/main/resources').absolutePath ].toArray(new String[0]),
        this.class.classLoader)
        .loadScriptByName('acme/plugins/CommonPlugin.groovy')

Но похоже, что он не может найти классы в том же пакете, что и плагин:

Caused by: groovy.lang.MissingPropertyException: No such property: CheckStringsExtension for class: acme.plugins.CommonPlugin

Попытка 3

Был комментарий к другой сущности, в котором предлагалось, что он может не работать, если скрипт плагина содержит объявление пакета, поэтому я также попытался сделатьтривиальная обертка:

import acme.plugins.CommonPlugin
import org.gradle.api.Plugin
import org.gradle.api.Project

class SelfApplyBootstrap implements Plugin<Project> {
    @Override
    void apply(Project project) {
        new CommonPlugin().apply(project);
    }
}

А потом:

apply plugin: new GroovyScriptEngine(
        [ file('src/main/java').absolutePath,
          file('src/main/groovy').absolutePath,
          file('src/main/resources').absolutePath ].toArray(new String[0]),
        this.class.classLoader)
        .loadScriptByName('SelfApplyBootstrap.groovy')

Но я все равно получаю ту же ошибку:

Caused by: groovy.lang.MissingPropertyException: No such property: CheckStringsExtension for class: acme.plugins.CommonPlugin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...