Java 插件一个基础的 Java 项目多项目的 Java 构建
正如我们之后的详细描述 (参见第55章,构建的生命周期), Gradle 有一个配置阶段和执行阶段.在配置阶段后,Gradle 将会知道应执行的所有任务.Gradle 为你提供一个"钩子",以便利用这些信息.举个例子,判断发布的任务是否在要被执行的任务当中.根据这一点,你可以给一些变量指定不同的值.
Gradle 允许在脚本中定义一个或多个默认任务.例子 6.15. 定义默认任务build.gradledefaultTasks 'clean', 'run'task clean << { println 'Default Cleaning!'}task run << { println 'Default Running!'}task other << { println "I'm not a default task!"}gradle -q 命令的输出> gradle -qDefault Cleaning!
Gradle 能很好地衡量你编写脚本的逻辑能力. 首先要做的是如何提取一个方法.例子 6.14. 使用方法组织脚本逻辑build.gradletask checksum << { fileList('../antLoadfileResources').each {File file -> ant.checksum(file: file, property: "cs_$file.name") println "$file.name Checksum: ${ant.properties["cs_$file.
Ant 任务是 Gradle 的一等公民.Gradle 通过 Groovy 出色的集成了 Ant 任务.Groovy 自带了一个 AntBuilder.相比于从一个 build.xml 文件中使用 Ant 任务,在 Gradle 里使用 Ant 任务更为方便和强大. 从下面的例子中,你可以学习如何执行 Ant 任务以及如何访问 ant 属性:例子 6.13. 使用 AntBuilder 来执行 ant.loadfile 任务build.gradletask loadfile <<
你可以给任务加入自定义的属性.列如加入一个叫做 myProperty 属性,设置一个初始值给 ext.myProperty.然后,该属性就可以像一个预定义的任务属性那样被读取和设置了.例子 6.12. 给任务加入自定义属性build.gradletask myTask { ext.myProperty = "myValue"}task printTaskProperties << { println myTask.
正如同你已经在之前的示例里看到,有一个短标记 $ 可以访问一个存在的任务. 也就是说每个任务都可以作为构建脚本的属性:例子 6.11. 当成构建脚本的属性来访问一个任务build.gradletask hello << { println 'Hello world!'}hello.doLast { println "Greetings from the $hello.name task."}gradle -q hello 命令的输出> gradle -q helloHello world!
Groovy 不仅仅被用来定义一个任务可以做什么.举个例子,你可以使用它来动态的创建任务.例子 6.8. 动态的创建一个任务build.gradle4.times { counter -> task "task$counter" << { println "I'm task number $counter" }}这里动态的创建了 task0, task1, task2, task3gradle -q task1 命令的输出> gradle -q task1I'm task number 1
就像你所猜想的那样,你可以声明任务之间的依赖关系.例子 6.6. 申明任务之间的依赖关系build.gradletask hello << { println 'Hello world!'}task intro(dependsOn: hello) << { println "I'm Gradle"}gradle -q intro 命令的输出> gradle -q introHello world!
Gradle 的构建脚本展示了 Groovy 的所有能力. 作为开胃菜, 来看看这个:例子 6.4. 在 Gradle 任务里使用 Groovybuild.gradletask upper << { String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " + someString.toUpperCase()}gradle -q upper 命令的输出>
有一种比我们之前定义的 hello 任务更简明的方法例子 6.3. 快捷的任务定义build.gradletask hello << { println 'Hello world!'}它定义了一个叫做 hello 的任务,这个任务是一个可以执行的闭包.我们将使用这种方式来定义这本指南里所有的任务.翻译者补充与前面的例子比较,doLast 被替换成了 <<.
你可以通过 gradle 命令运行一个 Gradle 构建.gradle 命令会在当前目录中查找一个叫 build.gradle 的文件.我们称这个 build.gradle 文件为一个构建脚本 (build script), 但是严格来说它是一个构建配置脚本 (build configuration script). 这个脚本定义了一个 project 和它的 tasks.让我们来先看一个例子,创建一个名为build.gradle的构建脚本.例子 6.
Gradle 里的任何东西都是基于这两个基础概念:projects ( 项目 )tasks ( 任务 )每一个构建都是由一个或多个 projects 构成的.一个 project 到底代表什么依赖于你想用 Gradle 做什么. 举个例子,一个 project 可以代表一个 JAR 或者一个网页应用. 它也可能代表一个发布的 ZIP 压缩包,这个 ZIP 可能是由许多其他项目的 JARs 构成的.
这一章主要讲解以下内容Projects 和 tasksHello world快捷的任务定义构建脚本代码任务依赖动态任务使用已经存在的任务快捷注释附加的 task 属性使用 Ant 任务使用方法默认的任务通过 DAG 配置
当使用 Gradle 时, 你肯定会碰到许多问题.解决遇到的问题如果你碰到了问题, 首先要确定你使用的是最新版本的 Gradle. 我们会经常发布新版本, 解决一些 bug 并加入新的功能. 所以你遇到的问题可能就在新版本里解决了.如果你正在使用 Gradle Daemon, 先暂时关闭 daemon (你可以使用 switch --no-daemon 命令). 在第19章我们可以了解到更多关于 daemon 的信息.
JVM 选项可以通过设置环境变量来更改. 您可以使用 GRADLE_OPTS 或者 JAVA_OPTS.JAVA_OPTS 是一个用于 JAVA 应用的环境变量. 一个典型的用例是在 JAVA_OPTS 里设置HTTP代理服务器(proxy),GRADLE_OPTS 是内存选项. 这些变量可以在 gradle 的一开始就设置或者通过 gradlew 脚本来设置.
你可以从 Gradle网站 下载任意一个已经发布的版本解压缩Gradle 发布的版本为 ****ZIP 格式. 所有文件包含:Gradle 的二进制文件.用户指南 (HTML 和 PDF).DSL参考指南.API文档 (Javadoc和 Groovydoc).扩展的例子,包括用户指南中引用的实例,以及一些更复杂的实例来帮助用户构建自己的build.二进制源码.此代码仅供参考.
Gradle 需要运行在一个 Java 环境里安装一个 Java JDK 或者 JRE. 而且 Java 版本必须至少是 6 以上.Gradle 自带 Groovy 库, 所以没必要安装 Groovy. 任何已经安装的 Groovy 会被 Gradle 忽略.Gradle 使用任何已经存在在你的路径中的 JDK (可以通过 java -version 检查, 如果有就说明系统已经安装了 Java 环境).
先决条件下载解压缩环境变量运行并测试您的安装JVM选项
接下来的教程讲先介绍Gradle的基础知识Chapter 4, 安装 Gradle描述如何安装 Gradle.Chapter 5, 脚本构建基础介绍脚本构建的基础元素: projects 和 tasks.Chapter 6, Java 快速入门展示如何使用 Gradle 来构建 Java 项目.Chapter 7, 依赖管理基础展示如何使用 Gradle 的依赖管理功能.Chapter 8, Groovy 快速入门展示如何使用 Gradle 来构建 Groovy 项目.
关注时代Java