-
下载安装gradle 2.1
- 安装先决条件:gradle安装需要1.6或者更高版本的jdk(jre)(可以使用java –version 验证),gradle自带groove lib库,所以不必安装groove,任何已安装groove都将被忽略。Gradle使用path路径下的jdk,当然,你也可以设置JAVA_HOME指向你的jdk安装路径。
-
Gradle发行版是一个zip压缩文件,完整的发行版包括:
- 二进制文件
- 用户指南(html和pdf)
- Dsl参考指南
- API文档(Javadoc和Groovydoc)。
- 大量示例,包括用户指南中引用的例子,一些完善的和更复杂的构建,你可以用来搭建自己的构建。
- 创建新的环境变量GRADLE_HOME,值为gradle的安装目录,另需
把/bin添加到path变量中。 - 你可以运行gradle –v来验证安装,输出显示gradle版本和本地环境变量配置(groove版本,jvm版本等等)。
- 你可以通过设置jvm环境变量来运行gradle。当然,你也可以使用GRADLE_OPTS 或 JAVA_OPTS ,或两者兼而有之。JAVA_OPTS环境变量按照惯例是许多java应用程序共享的。一个典型用例是设置HTTP代理JAVA_OPTS和GRADLE_OPTS内存选项。这些变量也可以设置gradle和gradlew脚本的开始选项。
注:这些不能用来设置命令行jvm选项。
-
构建脚本基础
-
Gradle中的一切都简历在2个基础之上:项目projects和任务task
每个gradle构建都由一个或多个项目组成。一个项目代表什么取决于你通过gradle怎么做。例如:一个项目可能代表一个jar lib库或者一个web应用程序;它也可能代表一个从其他项目jars提取出的zip分布;一个项目并一定代表一个构建;它可能代表一件事情要做;比如,部署你的应用程序到工作台或者生产环境中;如果这看起来有点模糊,不要担心,Gradle build-by-convention支持为一个项目添加更具体的定义。
每个项目都有一个或多个tasks任务组成。一个任务代表一个一些构建工作的原子块。这可能是编译一些类,创建一个JAR,生成javadoc, 或发布存档到仓库。
现在,我们将看看定义一些简单的任务在一个构建一个项目。 后面的章节将看 处理多个项目和更多关于工作项目和任务。
-
Hello World
使用gradle命令运行gradle构建。这个命令会在当前目录查找build.gradle文件,我们通常把这个文件叫做构建脚本。虽然严格来说它是一个构建配置脚本,正如我们稍后所看到的那样,这个脚本定义一个项目及其文档。
让我们来尝试创建一个构建脚本:build.gradle
在一个命令行shell,移动到build.gradle所在目录并执行构建脚本:gradle -q hello
一个构建脚本的执行:
有一个速记方法来定义一个任务,例如上面的hello,这个速记方法看起来更简洁:
上面定义一个名叫 hello的任务闭包执行脚本。我们将在整个用户指南中使用这种任务定义风格。
Gradle构建脚本给了你groovy的全部威力。作为开胃菜,先看看这个:
或者
如下
如你所想,你可以声明依赖于其他任务的任务
插入:命令行创建文件 echo.>build.gradle
问题:怎么在命令行输出中文
添加一个依赖项,这个依赖不是必须存在的(不是必须定义在依赖前*)
任务taskx对tasky的依赖声明在tasky的定义之前,这对多项目构建非常重要。任务依赖关系在15.4添加任务依赖项中会有更详细的探讨。
注意:你不能使用快捷键符号指向未定义的任务。
Groovy不但能定义一个任务做什么,例如,它还能动态创建任务。
一旦任务创建,他们就可以通过api进行访问。例如,用这个特性你可以在运行时为一个任务动态的添加依赖关系。Ant并不支持这一点。
或者,你也可以添加行为到现有任务中
注:task任务名不区分大小写(执行的时候)。
DoLast和doFirst可以多次被调用执行,他们在任务动作列表的开始或结束添加一个动作,他们在动作action列表中顺序执行。<<操作符是doLast的一个别名。
正如你所注意的,在例子中有一个很方便的符号来访问已存在的任务。每一个任务都可以看作是构建脚本的一个属性。
这使代码非常有可读性,特别是使用插件提供的任务时,比如compile编译任务。
你可以添加自己的属性到一个任务。例如:添加一个属性名myProperty,集ext.myProperty的默认值,完成后,这个属性就可以像预定义任务一样读取和设置值。
注:这里的ext应是gradle自带的,去掉后找不到指定属性。
额外的属性并不局限于任务,你可以阅读更多关于他们的部分:13.4.2"额外属性" 。
Ant任务是gradle的一等公民。它依靠groovy对ant任务提供优秀的jicheng 。通过gradle使用比原本的build.xml更强大和方便。从下面的例子中,你可以学习到如何执行ant任务和访问ant属性。
注:没做过ant,略过
你可以对ant构建脚本做更多的操作, 使用Ant从Gradle
稍后,你将看到,这些方法可以共享过项目中子项目的构建。如果你的构建逻辑非常复杂,gradle为你提供其他很方便的方式来组织他。 Chapter 17, Using Ant from Gradle
-
Gradle允许定义一个或多个默认的构建任务。
这相当于运行clean,run。在多项目中构建的每一个子项目都可以有特定的默认任务,如果一个子项目没有指定默认任务,则使用父项目的默认任务(如果存在的话)。
配置DAG
我们将在56章建立生命周期中详细描述,它有配置阶段和执行阶段。配置阶段后,gradle应该知道所有被执行的任务。Gradle提供一个钩子使用这些信息。一个用例将检查要发布的任务在执行任务中间。基于此,你可以给变量赋予不同的值。
在下面的例子中,执行分配和发布任务的结果变量是不同的值。
重要的是,whenReady影响任务的发布在发布任务命令执行前。这些工作使得发布任务不是首要任务(任务传递给gradle命令)。
在这一章,我们只是先看一下任务,这并不是对任务介绍的结束,如果你想进入更多的细节,第15章, 更多的任务 。