У меня есть плагин 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