Gradle学习(一)

安装

Gradle需要jdk1.5以上的安装环境,Gradle装配了自己的Groovy库,所以无需安装Groovy,配置GRADLE_HOME以及PATH

gradle -v 测试安装成功与否

Project与Task

每一个Gradle的配置都是由一个或多个Project组成,Project的含义取决于你用Gradle来做什么,一个Project可能代表一个Jar
library 或者一个web应用或者一个zip压缩包,一个Project并不一定代表一个即将被构建的项目,

也可能代表一个已经被构建好的项目。

每一个Project由一个或多个Task组成,一个Task代表一些原子性的构建工作,可能是编译代码,打jar包,生成java文档,或者发布一些归档信息到一个repository。

Hello World

用命令行运行Gradle构建的时候,会在当前目录下寻找一个名为build.gradle的文件

在这个build script里定义了一个名为hello的task,当你运行gradle
hello
命令时gradle就会执行hello这个task里面的内容,这样定义的方式与Ant中target十分相似,Gradle中的task可以等价于Ant中的target

task hello {
doLast{
println "Hello World!"
}

}

运行gradle -q
hello
 得到如下结果(-q选型时关闭gradle日志信息,直接使用gradle
hello
也可以得到相同的结果,但会打印出一些Gradle的日志)

一种更简洁的hello task定义方式,输出结果与上述方式结果一致

?





1

2

3

task hello << {

      println
‘Hello World‘

}

Task依赖

?





1

2

3

4

5

6

task hello << {

      println
‘Hello World‘

}

task intro(dependsOn: hello) << {

      println
"I‘m Gradle"

}

依赖与被依赖task的定义顺序可以颠倒

?





1

2

3

4

5

6

task taskX(dependsOn: ‘taskY‘) << {

     println
"taskX"

}

task taskY << {

     println
"taskY"

}

动态Task

?





1

2

3

4

5

6

4.times
{

  counter -> 

  task "task$counter"
<<{

     println
"I‘m task number $counter"

  }

}

操作已经存在的Task

一旦一个task被创建了那么他们就可以被API访问,这一点与Ant不同

?





1

2

3

4

5

6

7

4.times
{

  counter ->

  task "task$counter"
<<{

     println
"I‘m task number $counter"

  }

}

task0.dependsOn task2, task3

?





1

2

3

4

5

6

7

8

9

10

11

12

task hello << {

      println
‘Hello Earth‘

}

hello.doFirst {

    println
"Hello Venus"

}

hello.doLast {

    println
"Hello Mars"

}

hello << {

    println
"Hello Jupiter"

}

doFirst和doLast可以被定义并执行多次(定义同样的操作类型则按照定义的顺序执行) hello <<
等价于hello.doLast

额外的Task配置

你可以通过ext.设置task的额外属性

?





1

2

3

4

5

6

task myTask {

    ext.myProperty = "myValue"

}

task printTaskProperties <<{

    println
myTask.myProperty

}

定义默认任务

?





1

2

3

4

5

6

7

defaultTasks ‘clean‘, ‘run‘

task clean << {

   println
"Default Cleaning!"

}

task run << {

   println
"Default Running!"

}

相当于执行gradle clean run 命令

在多工程构建中每一个子项目都可以拥有其默认的任务,如果一个子项目没有指定其默认的任务,那么就会执行其父项目的默认任务(如果父项目中定义的话)

gradle有配置阶段以及执行阶段,在配置阶段之后Gradle会知道将要被执行的所有任务,Gradle给你提供一个“钩子”来让你使用这些信息

下面这个例子阐述了release task是不是被执行的task之一,根据结果你可以分配不同的值给不同的变量

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

task distribution << {

   println
"We build the zip with version=$version"

}

task release(dependsOn: ‘distribution‘) <<{

   println
"We release now"

}

gradle.taskGraph.whenReady {

   taskGraph ->

   if(taskGraph.hasTask(release)) {

      version = "1.0"

   } else
{

       version = "1.0-SNAPSHOT"

   }

}

当release task被执行的时候version = "1.0" 没被执行的时候   version =
"1.0-SNAPSHOT"

Gradle学习(一),布布扣,bubuko.com

时间: 2024-10-06 02:17:22

Gradle学习(一)的相关文章

Gradle学习(四) web工程构建

Gradle为应用开发提供了两个相关的插件:war plugin以及jetty plugin war plugin继承了java plugin为你的工程构建war包,jetty pugin继承了war plugin可以让的工程构建在嵌入式容器jetty中 构建War文件 首先在你的build.gradle中添加如下一行 apply plugin: 'war' 由于war plugin继承了java plugin,所有java plugin也会被默认的加入配置文件中 运行gradle build命

Gradle学习系列之一——Gradle快速入门

Gradle学习系列之一--Gradle快速入门 这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin 请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git 和Maven一样,

gradle学习笔记

一直想着花时间学习下gradle,今天有空.入门一下.参考:极客学院gradle使用指南,以及csdn专栏:gradle翻译 手下下载gradle的zip,然后根据极客学院的教程手动打一遍. 测试代码:https://github.com/chenxing12/l4gradle

Gradle学习目录总结

如果是你想干的事情,在别人看起来可能是很难的一件事,不过你自己很喜欢,你不会觉得很苦.我开始创业那会是28岁.对我来讲,我创业的目的不是为了自己当老板,我希望有一个平台有一个环境,我可以控制一些资源,让我去创造一个新的产品和服务: -- 周鸿祎 Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言. 当然,我们现在最多都是在Android Studio的项目中,和我一样没有接触过的就

gradle学习总结,偷窥android studio的底裤

原文来自微凉一季的博客http://jijiaxin89.com/2015/08/29/gradle-use-note/ 用过android studio的对gradle应该都不陌生了,gradle文件的基本配置大同小异,略做了解使用应该是没什么问题了.但是深入细致的了解一下对于理解项目还是很有帮助的,尤其是遇到一些配置复杂的github项目,不了解gradle可能会遇到跑不起来又束手无策的情形.下面对gradle相关知识.用法做一下总结. DSL (domain specific langua

Gradle学习系列之一——Gradle快速入门(转)

这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin 请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git 和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作

Gradle学习系列(三)

上一篇我们已经学习了 Gradle 打包,那么这一节 就开始讲讲本章的第二版块:打包及使用Gradle过程中的常见错误问题. 有时候我们需要编辑一个开源项目之类的,希望把它导入了我们自己的IDE工具中比如AS,那么在导入过程中我们会经常遇到些错误,有时提示 gradle版本不对了或者buildTools工具不对啦或者某个命令用的不对啦等等这些细小问题,这时候去一一修改它了, 1.>提示 gradle版本不对 : 我们就需要去project根目录下的build.gradle里面查看 gradle的

【转载】Gradle学习 第二章:概述

转载地址:http://ask.android-studio.org/?/article/6 Here is a list of some of Gradle's features.<翻译>以下是关于Gradle特点的描述 Declarative builds and build-by-convention 宣言和公约At the heart of Gradle lies a rich extensible Domain Specific Language (DSL) based on Gro

【转载】Gradle学习 第六章:构建脚本基础

转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle sits on top of two basic concepts: projects and tasks.<翻译> Gradle中的所有东西都是围绕两个基本概念:项目和任务. Every Gradle build is made up of one or more projects. What a