Gradle教程(一)

原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-1-installation-setup/

在这个教程中,我们将注意力集中在Gradle的启动上。尽管Android Studio内置了Gradle,我们现在的目标是理解Gradle的安装,启动,执行基本的Gradle命令。

在我们开始前,如果你想知道为什么Gradle是构建工具很好的选择,我建议你阅读这篇文章article。尽管需要基础才能阅读它,这篇文章将开拓你的视野为什么开发者如此拥簇Gradle.

接下来几部分将会带你安装Gradle。Gradle需要java环境,我假设你是java开发者,已经安装了java sdk在你的机器上。

下载 Gradle

目前为止,Gradle最新版是2.2.1可以在这里获取。

下载zip文件到你机器上。你会发现它的文件名为gradle-2.2.2-all.zip。将它解压缩。

在我的机器上,我将它解压到e:\gradle-2.2.1,所以我将看到如下的子文件夹:

图片
图片

你可能会问为什么你需要单独安装Gradle。如果你已经安装了Android Studio你将会注意到这点。正如所知的,Android Studio内置了Gradle,没必要再次安装Gradle。

后面的教程中我们将会讨论Android Studio,使用它内置的Gradle。这章和接下来的几章我们会从我们自己安装的Gradle开始,运行命令行,近距离得接触它,以便理解他到底做了什么。后面,当Android Studio做这些事的时候,我们将更好的理解发生了什么。你就不会认为Android studio是在执行黑魔法。

现在,下载Gradle,启动它吧。

环境变量设置

\bin文件夹包含了gradle批处理文件(unix和windows),你将用它运行命令。

做接下来几件事:
1.创建系统环境变量GRADLE_HOME将它指向Gradle安装文件夹,在我的机器上是e:\gradle-2.2.1,因此我创建了GRADLE_HOME并将它的值指定为e:\gradle-2.2.1
2.添加%GRADLE_HOME%\binPATH环境变量中。这将允许你在任何文件夹启动gradle命令。

验证是否安装成功

为了验证是否安装成功,打开终端,输入如下命令:

gradle -v

这将会显示gradle版本信息:

------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------

Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a

Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_40 (Oracle Corporation 24.0-b56)
OS: Windows 7 6.1 amd64

如果你没看到这些信息,检查你的安装,确保设置了环境变量。

A word about Groovy

任何缺少Groovy关于Gradle的讨论都是不完整的。Groovy是最受欢迎的运行于JVM上的语言。

Gradle有以下几个优点:
*代码简洁
*灵活
*使你能按你所想的配置
Groovy在其中扮演了重要的角色。不像在ant和Maven中使用的xml,Groovy是高级语言。所有高级语言有的特性,比如子句Groovy都支持。你希望Gradle运行的build文件确实是可以运行的代码。

一个问题是‘我需要学习Groovy吗?’我认为没必要,除非你不使用约定而是按你自己的方式做事情,这样你需要了解Groovy,因为这是Gradle灵活的来源。一般情况下,你只使用接下来将会看到的build.gradle模板,尽管它包含Groovy语法,但你不需要完全明白细节。

所以,尽管不需要你很好的掌握Groovy才能理解Gradle,但它帮助你更好的了解Groovy的威力。

基本的命令

现在我们还没有写任何源代码或gradle文件,我们接下来会这么做。我们尝试接下来的几个命令:

gradle -q help

这个命令打印基本的帮助信息。-q参数指定为静默模式,当有很多无效信息输出时,这很有效。

gradle -q tasks

这条命令列出了你可以使用的命令。

gradle properties

这条命令列出了许多预定义的属性。你可以修改修改这些属性在你的build文件中。

我们不准备编译java工程,这是下一篇做的事。我们现在理解Groovy给Gradle带来的威力。

开始之前,我们先讲讲build.gradle文件。这是标准的build文件名。所有你希望执行的指令都放在这里。这个系列的教程,我们会在build.gradle文件上创建使用各种插件/任务,来帮我们编译、构建、测试、运行java应用。

现在,我们做以下尝试:
在一个文件夹,比如example1,创建build.gradle。
写入如下内容:

task compileTask << { 
    System.out.println "compiling..." 
}

现在在你创建该文件的目录下打开终端,输入如下命令:

gradle -q tasks

这条命令将会列出所有的你能执行的任务,你会注意到除了标准的任务,还有我们创建的任务compileTask

Other tasks
-----------
compileTask

这引出了我们的第一个概念我们的gradle构建文件由一系列我们指定的任务构成,gradle构建系统为我们执行这些任务。目前我们指定的任务是compileTask,如你看到的Groovy代码,我们唯一做的是System.out.pritnln。记住Groovy是高级语言。

现在,我们怎么运行compileTask呢?

在我们开始前,有一点要明白,当我们执行gradle命令时,它会在当前目录中寻找build.gradle文件。如果找到就是用它。前面的例子中,系统可以找到它,他决定了哪些任务可以被执行。

如果我们只输入gradle不带任何参数,也不指定任何任务会发生什么。我们试试看:

gradle

将会有如下输出:

:help
Welcome to Gradle 2.2.1.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
BUILD SUCCESSFUL
Total time: 2.39 secs

这很清楚的告诉你你需要指定任务名。比如gradle<task>。我们给出如下命令:

gradle -q compileTaks

将会有如下输出:

compiling...

我们改进下build.gradle文件增加另一个任务,现在看起来像这样:

task compileTask << {
 System.out.println "compiling..." 
}

task buildTask << {
 System.out.println "building..."
}

现在,如果你给出如下命令:

gradle -q tasks

你会发现这两个任务都会列在oterTasks下:

Other tasks
-----------
buildTask
compileTask

你可以运行这些任务通过gradle compileTaskgradle buildTask

如果我们想去创建一个默认的任务,以便我们不需要显式的指定任务名就可以执行。

为了达到这样的效果,修改build.gradle文件如下:

defaultTasks 'buildTask'

task compileTask << {
  System.out.println "compiling..." 
}

task buildTask << {
  System.out.println "building..."
}

现在我们输入gradle -q,将会输出building...

最后一部分需要注意的是任务间的依赖。如果我们想让buildTask依赖compileTask。如果buildTask执行,那么compileTask也会执行。

修改build.gradle文件如下:

defaultTasks 'buildTask'

task compileTask << {
  System.out.println "compiling..." 
}

task buildTask (dependsOn:compileTask) << {
  System.out.println "building..."
}

现在执行gradle -q将会有如下显示:

compiling...
building...

我们在这个章节所讲的是非常基础的Gradle知识。将build文件作为一系列待执行的任务。如果你是java开发者有构建的经历,你会注意到这样的事实:要构建任何东西,我们需要去做如下的事:编译,构建,运行,测试,打包。这些在Gradle中都以任务存在。

我们不需要去手工写所有的这些任务,尽管你可以这么去做,只要你愿意。使用Gradle遵循的约定和插件(plugins),我们可以执行一系列步骤去构建我们的工程。

现有的插件有如java plugin, WAR pluginn, AppEngine plugin, Android plugin等,这些插件给出了预定义的任务。后面的章节,我们将会看到更多。

下一章

在下一章中,我们将使用gradle去编译构建java工程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容