什么是gradle中的"任务类型"?

hum*_*ngV 13 gradle

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

task myCopyTask(type: Copy){
  from "foo"
  into "bar"
}
Run Code Online (Sandbox Code Playgroud)

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

mko*_*bit 6

要获取现有任务的类型,您可以通过命令行选项利用 Gradle 的内置help任务--task。该--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
Run Code Online (Sandbox Code Playgroud)


std*_*out 5

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

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

注意:任务随各种插件一起提供或由您编写。


lan*_*ava 2

为什么不直接添加一个println并自己找出来呢?

task myCopyTask(type: Copy) {
    ... 
}
println "Type is $myCopyTask.class.name"
Run Code Online (Sandbox Code Playgroud)

  • 但需要它做什么呢? (2认同)