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教程(一)_第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  ...
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。我们给出如下命令:

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工程。

你可能感兴趣的:(Gradle教程(一))