在 Gradle 里, 依赖可以组合成configurations(配置). 一个配置简单地说就是一系列的依赖. 我们称它们为(dependency configuration)依赖配置. 你可以使用它们声明项目的外部依赖. 正如我们将在后面看到, 它们也被用来声明项目的发布.Java 插件定义了许多标准的配置. 下面列出了一些, 你也可以在[Table 23.5, “Java 插件 - 依赖配置”](Table 23.
让我们看一下一些依赖的声明. 下面是一个基础的构建脚本:例子 8.1. 声明依赖build.gradleapply plugin: 'java'repositories { mavenCentral()}dependencies { compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' testCompile group: 'junit', name: 'junit', version: '4.+'}这里发生了什么?
对于绝大多数多项目构建, 有一些配置对所有项目都是常见的或者说是通用的. 在我们的例子里, 我们将在根项目里定义一个这样的通用配置, 使用一种叫做配置注入的技术 (configuration injection). 这里, 根项目就像一个容器, subprojects 方法遍历这个容器的所有元素并且注入指定的配置 . 通过这种方法, 我们可以很容易的定义所有档案和通用依赖的内容清单:Example 7.12.
下面是一个完整的构建文件的样本:Example 7.9. Java 例子 - 完整的构建文件build.gradleapply plugin: 'java'apply plugin: 'eclipse'sourceCompatibility = 1.5version = '1.
Java 插件给项目加入了一些属性 (propertiy).这些属性已经被赋予了默认的值,已经足够来开始构建项目了.如果你认为不合适,改变它们的值也是很简单的.让我们看下这个例子.这里我们将指定 Java 项目的版本号,以及我们所使用的 Java 的版本.我们同样也加入了一些属性在 jar 的清单里.例子 7.5. 定制 MANIFEST.MF 文件build.gradlesourceCompatibility = 1.
通常,一个 Java 项目有许多外部的依赖,既是指外部的 JAR 文件.为了在项目里引用这些 JAR 文件,你需要告诉 Gradle 去哪里找它们.在 Gradle 中,JAR 文件位于一个仓库中,这里的仓库类似于 MAVEN 的仓库.仓库可以被用来提取依赖,或者放入一个依赖,或者两者皆可.举个例子,我们将使用开放的 Maven 仓库:例子 7.3. 加入 Maven 仓库build.
Java 插件在你的项目里加入了许多任务.然而,你只会用到其中的一小部分任务.最常用的任务是 build 任务,它会建立你的项目.当你运行 gradle build 命令时,Gradle 将会编译和测试你的代码,并且创建一个包含类和资源的 JAR 文件:例子 7.2. 建立一个 Java 项目gradle build 命令的输出>
如你所见,Gradle 是一种多用途的构建工具.它可以在你的构建脚本里构建任何你想要实现的东西.但前提是你必须先在构建脚本里加入代码,不然它什么都不会执行.大都数 Java 项目是非常相像的:你需要编译你的 Java 源文件,运行一些单元测试,同时创建一个包含你类文件的 JAR.如果你可以不需要为每一个项目重复编写这些,我想你会非常乐意的.
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.
正如同你已经在之前的示例里看到,有一个短标记 $ 可以访问一个存在的任务. 也就是说每个任务都可以作为构建脚本的属性:例子 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 命令运行一个 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 构成的.
当使用 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选项
关注时代Java