为了构建一个 WAR 文件, 需要在项目中加入 War 插件:例子 9.1. War 插件build.gradleapply plugin: 'war'注意:项目代码可以在samples/webApplication/quickstart 在Gradle的发行包"-all"中找到.这个插件也会在你的项目里加入 Java 插件. 运行 gradle build 将会编译, 测试和创建项目的 WAR 文件. Gradle 将会把源文件包含在 WAR 文件的 src/main/webapp 目录里.
本章是一项正在进行中的工作.Gradle 提供了两个插件用来支持网页应用: War 插件和 Jetty 插件. War 插件是在 Java 插件的基础上扩充的用来构建 WAR 文件. Jetty 插件是在 War 插件的基础上扩充的, 允许用户将网页应用发布到一个介入的 Jetty 容器里.
这一章描述了一个非常简单的 Groovy 项目. 通常, 一个真正的项目要比这个复杂的多. 因为 Groovy 项目是一个 Java 项目, 任何你可以对 Java 项目做的配置也可以对 Groovy 项目做.Chapter 24,The Groovy Plugin有更加详细的描述, 你也可以在 samples/groovy 目录里找到更多的例子.
让我们看一个例子. 为了使用 Groovy 插件, 加入下面的代码:例子 8.1. Groovy 插件build.gradleapply plugin: 'groovy'注意:这个例子的代码可以在 samples/groovy/quickstart 在Gradle分布的 "-all" 中找到.它也会同时把 Java 插件加入到你的项目里.
构建 Groovy 项目时, 你需要使用 Groovy plugin (Groovy插件). 这个插件扩展了 Java 插件, 加入了编译 Groovy 的依赖. 你的项目可以包含 Groovy 的源代码, Java 源代码, 或者它们的混合.在其他方面,一个Groovy项目与Java项目是相同的,就像我们在Chapter 7, Java Quickstart见到的一样.
依赖配置也可以用来发布文件[3]. 我们称这些文件publication artifacts, 或者就叫 artifacts.插件可以很好的定义一个项目的 artifacts, 所以你并不需要做一些特别的工作来让 Gradle 需要发布什么. 你可以通过在 uploadArchives 任务里加入仓库来完成. 下面是一个发布远程 Ivy 库的例子:例子 8.8. 发布一个 Ivy 库build.
Gradle 是怎样找到那些外部依赖的文件的呢? Gradle 会在一个repository(仓库)里找这些文件. 仓库其实就是文件的集合, 通过 group, name 和 version 整理分类. Gradle 能解析好几种不同的仓库形式, 比如 Maven 和 Ivy, 同时可以理解各种进入仓库的方法, 比如使用本地文件系统或者 HTTP.默认地, Gradle 不提前定义任何仓库. 在使用外部依赖之前, 你需要自己至少定义一个库.
你可以声明许多种依赖. 其中一种是external dependency(外部依赖). 这是一种在当前构建之外的一种依赖, 它被存放在远程或本地的仓库里, 比如 Maven 的库, 或者 Ivy 库, 甚至是一个本地的目录.下面的例子讲展示如何加入外部依赖例子 8.2. 定义一个外部依赖build.gradledependencies { compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.
在 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.+'}这里发生了什么?
粗略的讲, 依赖管理由两部分组成. 首先, Gradle 需要了解你的项目需要构建或运行的东西, 以便找到它们. 我们称这些传入的文件为项目的 dependencies(依赖项). 其次, Gradle 需要构建并上传你的项目产生的东西. 我们称这些传出的项目文件为 publications(发布项). 让我们来看看这两条的详细信息:大多数项目都不是完全独立的. 它们需要其它项目进行编译或测试等等.
什么是依赖管理声明你的依赖依赖配置外部的依赖仓库发布 artifacts
(该章需加入更多内容。。。原稿写的太简单了)我们同时也加入了一个发行版本, 将会送到客户端:Example 7.14. 多项目构建 - 发行文件api/build.gradletask dist(type: Zip) { dependsOn spiJar from 'src/dist' into('libs') { from spiJar.archivePath from configurations.runtime }}artifacts { archives dist}
你可以在同一个构建里加入项目之间的依赖, 举个例子, 一个项目的 JAR 文件被用来编译另外一个项目. 在 api 构建文件里我们将加入一个由 shared 项目产生的 JAR 文件的依赖. 由于这个依赖, Gradle 将确保 shared 项目总是在 api 之前被构建.Example 7.13. 多项目构建 - 项目之间的依赖api/build.gradledependencies { compile project(':shared')}
对于绝大多数多项目构建, 有一些配置对所有项目都是常见的或者说是通用的. 在我们的例子里, 我们将在根项目里定义一个这样的通用配置, 使用一种叫做配置注入的技术 (configuration injection). 这里, 根项目就像一个容器, subprojects 方法遍历这个容器的所有元素并且注入指定的配置 . 通过这种方法, 我们可以很容易的定义所有档案和通用依赖的内容清单:Example 7.12.
为了定义一个多项目构建, 你需要创建一个设置文件 ( settings file). 设置文件放在源代码的根目录, 它指定要包含哪个项目. 它的名字必须叫做 settings.gradle. 在这个例子中, 我们使用一个简单的分层布局. 下面是对应的设置文件:Example 7.11. 多项目构建 - settings.gradle filesettings.
现在让我们看一个典型的多项目构建. 下面是项目的布局:Example 7.10. 多项目构建 - 分层布局构建布局multiproject/ api/ services/webservice/ shared/注意: 这个例子的代码可以在 samples/java/multiproject 里找到.现在我们能有三个项目. 项目的应用程序接口 (API) 产生一个 JAR 文件, 这个文件将提供给用户, 给用户提供基于 XML 的网络服务.
下面是一个完整的构建文件的样本:Example 7.9. Java 例子 - 完整的构建文件build.gradleapply plugin: 'java'apply plugin: 'eclipse'sourceCompatibility = 1.5version = '1.
为了把你的项目导入到 Eclipse, 你需要加入另外一个插件:Example 7.8. Eclipse 插件build.gradleapply plugin: 'eclipse'现在运行 gradle eclipse 命令来生成 Eclipse 的项目文件. Eclipse 任务将在第 38 章, Eclipse 插件里详细讨论.
通常 JAR 文件需要在某个地方发布. 为了完成这一步, 你需要告诉 Gradle 哪里发布 JAR 文件. 在 Gradle 里, 生成的文件比如 JAR 文件将被发布到仓库里. 在我们的例子里, 我们将发布到一个本地的目录. 你也可以发布到一个或多个远程的地点.Example 7.7. 发布 JAR 文件build.
关注时代Java