Groovy 如何运行gradle中插件创建的任务

Groovy 如何运行gradle中插件创建的任务,groovy,gradle,gradle-plugin,Groovy,Gradle,Gradle Plugin,我编写了一个gradle插件,它添加了一个名为generateTestDocs的自定义任务,该任务依赖于任务groovydoc,该任务本身由groovy插件创建 //MyPlugin.groovy @Override void apply(Project project) { project.apply(plugin: 'groovy') project.task(type: GenerateTestDocsTask, dependsOn: ':groovydoc', 'gene

我编写了一个gradle插件,它添加了一个名为
generateTestDocs
的自定义任务,该任务依赖于任务
groovydoc
,该任务本身由
groovy
插件创建

//MyPlugin.groovy
@Override
void apply(Project project) {
    project.apply(plugin: 'groovy')
    project.task(type: GenerateTestDocsTask, dependsOn: ':groovydoc', 'generateTestDocs')
}

project.tasks.groovydoc.doFirst {
    println "I should see this message but I don't"
}
我试图通过运行任务
generateTestDocs

@Test
void testRunGenerateTestDocs() {
    Project project = ProjectBuilder.builder().build()
    project.apply(plugin: 'my.gradle.plugin')
    project.tasks.generateTestDocs.actions*.execute(project.tasks.generateTestDocs)
}

对于测试中的最后一行,我只想说
project.task.generateTestDocs.execute()
,让它运行任务及其所有依赖项,但这似乎不起作用。编写gradle插件的文档仅显示断言,如
assertTrue(project.tasks.hello instanceof GreetingTask)
,它显示任务已添加到项目中,但没有显示如何运行该任务。

ProjectBuilder
仅用于单元测试。要将构建作为测试的一部分运行,您需要使用Gradle工具API或第三方插件,例如(构建在工具API上)。

我遇到了同样的问题,我通过添加解决了这个问题

应用插件:CustomPluginName

在当前gradle.build中:

apply plugin: 'groovy'
...
// in this case Plugin name is MyPlugin
apply plugin: MyPlugin 

Nevermind的可能副本,在这个问题中找到了我的答案: