【问题标题】:What exactly is "task type" in gradle?gradle中的“任务类型”到底是什么?
【发布时间】:2016-12-28 20:16:35
【问题描述】:

我可以为 gradle 任务声明一个类型,这样做似乎继承了一些方法。例如:

task myCopyTask(type: Copy){
  from "foo"
  into "bar"
}

所以,我认为myCopyTaskorg.gradle.api.tasks.Copy 类的一个实例,是吗?如果我声明一个没有任何类型的任务,它是org.gradle.api.DefaultTask 的一个实例?对不起,基本问题。我一直在阅读像 this page 这样的 gradle 指南,但我不清楚 type: 到底是什么。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    要获取现有任务的类型,您可以通过 --task 命令行选项使用 Gradle 的内置 help 任务。 --task 选项接受项目中任何任务的任务路径。下面是一个在自身上使用help 任务的示例:

    # ./gradlew help --task help                               
    
    > Task :help                                        
    Detailed task information for help                  
    
    Path                                                
         :help                                          
    
    Type                                                
         Help (org.gradle.configuration.Help)           
    
    Options                                             
         --task     The task to show help for.          
    
    Description                                         
         Displays a help message.                       
    
    Group                                               
         help
    

    【讨论】:

    • 很好的解释,我整天都在扫描文档,没有找到任何东西。
    【解决方案2】:

    为什么不添加println 并找出自己呢?

    task myCopyTask(type: Copy) {
        ... 
    }
    println "Type is $myCopyTask.class.name"
    

    【讨论】:

    • 确实如此。抱歉,我没有想到那样使用 println。谢谢。实际的课程是我认为(或接近)的 org.gradle.api.tasks.Copy_Decorated org.gradle.api.DefaultTask_Decorated
    • 但是它有什么用呢?
    【解决方案3】:

    已经回答了,但这也可能有助于理解。

    它们是Task 类型的子类。为任务定义类型后,您就可以访问/设置/配置该特定任务的属性。在您的情况下,这是一个名为“Copy”的子类(正如您已经弄清楚的那样)。

    注意:任务附带各种插件或由您编写。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2014-06-05
    • 2014-03-23
    • 2017-07-26
    • 2011-11-25
    相关资源
    最近更新 更多