gradle 学习笔记(一)

gradle 简介

其实是一个项目构建工具,结合了maven 和 ant,基于groovy 语法。

构建基础

Projects 和 tasks

projects 和 tasks是 Gradle 中最重要的两个概念。

任何一个 Gradle 构建都是由一个或多个 projects 组成。每个 project 包括许多可构建组成部分。 这完全取决于你要构建些什么。举个例子,每个 project 或许是一个 jar 包或者一个 web 应用,它也可以是一个由许多其他项目中产生的 jar 构成的 zip 压缩包。一个 project 不必描述它只能进行构建操作。它也可以部署你的应用或搭建你的环境。不要担心它像听上去的那样庞大。 Gradle 的 build-by-convention 可以让您来具体定义一个 project 到底该做什么。

每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。

创建task的几种方法:(在build.gradle文件中,此文件为gradle的配置文件  )

task hello {
    doLast {                                  //doFirst  亦可
        println 'Hello world!'
    }
}

或者可以这样:

task hello << {
    print("hello")
}    

    这里的“<<”表示向helloWorld中加入执行代码——其实就是groovy代码。Gradle向我们提供了一整套DSL,所以在很多时候我们写的代码似乎已经脱离了groovy,但是在底层依然是执行的groovy。比如上面的task关键字,其实就是一个groovy中的方法,而大括号之间的内容则表示传递给task()方法的一个闭包。

 

像上面定义的task类型为默认的DefaultTask类型,这个hello就是DefaultTask的对象,我们还可以明确指出task的类型,比如下面用于文件拷贝的task

task copyFile(type:Copy) {
    from 'abin'                //将文件夹abin的内容拷贝到文件夹lben中(build.gradle 所处目录)
    into 'lben'
}

task 之间可以存在依赖关系(先执行taskB):

task taskA(dependsOn: taskB) {
   doFirst {
         //
   }
}
        

  Gradle的Project从本质上说只是含有多个Task的容器,一个Task与Ant的Target相似,表示一个逻辑上的执行单元。我们可以通过很多种方式定义Task,所有的Task都存放在Project的TaskContainer中。

  每一个task类型都会包含很多Property,其中有Gradle为每个Task默认定义的Property,比如description,logger等。另外,每一个特定的Task类型还可以含有特定的Property,比如Copy的from和to等。当然,我们还可以动态地向Task中加入额外的Property。在执行一个Task之前,我们通常都需要先设定Property的值,Gradle提供了多种方法设置Task的Property值。

     我们可以在定义task的时候进行配置

task hello7 << {
   description = "this is hello7" 
   println description
}

  也可以为一个已经存在的task,通过闭包的形式进行配置,对上面的hello7来说

hello7 {
description = "this is hello7"
}

  执行一个任务时,gradle会扫描整个文档,先对gradle进行property配置,然后在执行

 

posted on 2018-07-17 10:35  abin_C  阅读(122)  评论(0)    收藏  举报

导航