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

3
我写了一个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) 的断言,这表明任务已添加到项目中,但没有说明如何运行该任务。


没关系,我在这个问题中找到了答案:https://dev59.com/EGQo5IYBdhLWcg3wKsxr - Marty Neal
2个回答

0

我曾遇到同样的问题,我通过添加以下内容解决了这个问题:

apply plugin: CustomPluginName

在当前的gradle.build文件中添加即可:

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

0

ProjectBuilder 只适用于单元测试。如果要将构建作为测试的一部分运行,则需要使用 Gradle 工具 API 或第三方插件,例如 nebula-test(它基于工具 API 构建)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接