我有一个Gradle插件,该插件整理了要在代码库上执行的一系列检查。我希望对插件本身进行同样的检查。
尝试1
我找到了解决方案here的一部分,该解决方案实际上试图使用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