groovy - 如何运行由 gradle 中的插件创建的任务

标签 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', '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 或第三方插件,例如 nebula-test (它建立在工具 API 的基础上)。

关于groovy - 如何运行由 gradle 中的插件创建的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367808/

相关文章:

java - Gradle 的 Maven Publish 插件未将 POM 或正确版本发布到 Maven Local

spring - 使用 Grails/Groovy 注入(inject)构造函数参数 Spring 资源文件

gradle - Grails “war”调用未将额外的属性传递给Gradle

android - Cordova 不会建立到Android

gradle - 连接到 Gradle 构建

java - 如何在java项目(在Intellij中)中使用gradle在开发/发布版本之间切换,类似于Android Studio的assembleRelease/assembleDebug?

Groovy - 如何在带有编译静态的 Map 中重载 '+=' 运算符?

groovy - Groovy++ 有多实用?

android - 如何在 Live Template 中自动导入项目的 R?

gradle - 如何在gradle中复制文件?