当前位置: 首页 > 知识库问答 >
问题:

分级自定义任务执行阶段

刁远
2023-03-14

https://docs.gradle.org/current/userguide/custom_tasks.html

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
}

task hello(type: GreetingTask)

如何使此任务在执行阶段运行?正在传递一个空闭包

<< {

}

唯一的解决办法?

`build.dependsOn(hello)`

但是hello任务似乎是在构建的配置阶段调用的。

共有1个答案

王才英
2023-03-14

将以下内容添加到build.gradle文件中:

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
}

task hello(type: GreetingTask) {
    println "This is the configuration phase"

    doFirst {
        println "This is the execution phase"
    }
}

现在执行gradle hello。您将看到的输出是

This is the configuration phase
:hello
This is the execution phase
hello from GreetingTask

BUILD SUCCESSFUL

如您所见,任务的输出发生在doFirst()之后,这肯定发生在执行阶段。

 类似资料:
  • 我想把多个分级任务作为一个来运行。所以不是 这行不通

  • 试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b

  • 我想写一个Gradle任务,在我所有的子项目中共享。此任务在调用它的子项目中查找所有其他类型为“GenerateMavenPom”的任务,并执行这些任务。 通过这样做,我的子项目可以定义他们想要的任何Maven发布,我可以使用“gradle GenerateMavenPomFiles”等单个任务执行gradle来创建pom.xml,而不需要知道每个子项目中的单个发布类型。为什么?因为Maven插件

  • 我正在使用Eclipse的STS插件创建gradle多项目。我以为我在读完教程后得到了基本的知识,但我无法再现所显示的行为。添加时 对于父项目的build.gradle,我将假设每个项目执行的任务'hello‘。为子项目实际进行了2次,但结果只是: 我的项目树看起来或多或少是这样的:

  • 我知道我能做到 但这也会得到projA和projB,我只想在c,d,E上运行任务...请让我知道实现这一点的最佳方法。

  • 我只是想继续我的应用程序,而我得到了这个编译错误,我不知道它是从哪里开始的: 这是我的分级文件: