更多关于任务

首先:运算符 <<(leftShift)相当于 doLast {closure}。从 gradle 3.2 开始不推荐使用。所有任务代码都在 build.gradle 中编写。

任务代表构建执行的一些原子工作。这可能是编译某些类,创建 JAR,生成 Javadoc 或将一些存档发布到存储库。

Gradle 支持两大类任务:简单和增强。

我们来看一些任务定义样式:

task hello {
    doLast{
       //some code
    }    
}

或者:

task(hello) {
    doLast{
       //some code
    }    
}

上述任务是等价的。此外,你可以为任务提供一些扩展,例如:dependsOnmustRunAftertype 等。你可以通过在任务定义后添加操作来扩展任务,如下所示:

task hello {
    doLast{
       println 'Inside task'
    }    
}
hello.doLast {
    println 'added code'
}

当我们执行此操作时,我们得到:

> gradle -q hello
    Inside task
    added code

这里检查有关任务依赖性和排序的问题

我们来谈谈两大类任务。

简单:

我们使用动作闭包定义的任务:

    task hello {
        doLast{
        println "Hello from a simple task"
        }
    }

增强

增强它是一项具有预配置行为的任务。你在项目中使用的所有插件都是扩展增强的任务。让我们创建我们的,你将了解它是如何工作的:

task hello(type: HelloTask)

class HelloTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from our custom task'
    }
}

此外,我们可以将参数传递给我们的任务,如下所示:

class HelloTask extends DefaultTask {
    String greeting = "This is default greeting"
    @TaskAction
    def greet() {
        println greeting
    }
}

从现在开始,我们可以像这样重写我们的任务:

   //this is our old task definition style
task oldHello(type: HelloTask) 
   //this is our new task definition style     
task newHello(type: HelloTask) {
    greeting = 'This is not default greeting!'
}

当我们执行此操作时,我们得到:

> gradle -q oldHello
This is default greeting

> gradle -q newHello
This is not default greeting!

所有关于开发的问题都会将插件插入官方网站