Gradle,这是一个基于 JVM 的富有突破性构建工具。Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目。本教程主要讲解了如何使用 Gradle 构建系统和构建系统过程中涉及的插件。适合人群适用于自动化地进行软件构建、测试、发布、部署、软件打包的项目。学习前提你需要有 Groovy 语言基础,对 Java 应用开发有一定的了解。
Gradle In Action中文版(Gradle中文教程), 目前正在翻译当中 欢迎大家一起加入如果发现不通顺或者有歧义的地方, 可以在评论里指出来, 我会及时改正的Github托管地址阅读地址我会开放权限给每一个加入的伙伴 (翻译或者校对),请提前邮箱联系 ouyanglip@gmail.com如何参与任何问题都欢迎直接联系我 ouyanglip@gmail.
Gradle 是一款基于 Groovy 语言的构建工具,它既保持了 Maven 的优点,又通过使用 Groovy 定义的 DSL 克服了 Maven 中使用 XML 繁冗以及不灵活的缺点。Gradle 2.0 是 Gradle 版本发展史上的一个重要里程碑,大版本的发布意味着 Gradle 更加成熟。新版本的 Gradle 除修复了大量Bug外,还移除了很多已经过时的特性以及 API,并引入了依赖管理系统,并加入对 Java 8 的支持。
Gradle 在它的核心中有意地提供了一些小但有用的功能,用于在真实世界中的自动化。所有有用的功能,例如以能够编译 Java 代码为例,都是通过插件进行添加的。插件添加了新任务 (例如JavaCompile),域对象 (例如SourceSet),约定(例如主要的 Java 源代码是位于 src/main/java),以及扩展的核心对象和其他插件的对象。
日志是构建工具的主要界面。如果日志太多,真正的警告和问题容易被隐藏。另一方面,如果出了错,你需要找出相关的信息。Gradle 定义了6个日志级别,如表 18.1,“日志级别”所示。除了那些您通过可能会看到的日志级别之外,有两个 Gradle 特定日志级别。这两个级别分别是 QUIET 和 LIFECYCLE. 默认使用后面的这个日志级别,用于报告构建进度。表 18.1.
先决条件Gradle 需要 1.5 或更高版本的 JDK.Gradle 自带了 Groovy 库,所以不需要安装 Groovy。Gradle 会忽略已经安装的 Groovy。Gradle 会使用 ptah (这里的"path"应该是指 PATH 环境变量。[Rover12421]译注) 中的 JDK(可以使用 java -version 检查)。当然,你可以配置 JAVA_HOME 环境变量来指向 JDK 的安装目录。
特性说明下面是一些 Gradle 特性的列表。基于声明的构建和基于约定的构建Gradle 的核心在于基于 Groovy 的丰富而可扩展的域描述语言(DSL)。 Groovy 通过声明性的语言元素将基于声明的构建推向下层,你可以按你想要的方式进行组合。 这些元素同样也为支持 Java, Groovy,OSGi,Web 和 Scala 项目提供了基于约定的构建。 并且,这种声明性的语言是可以扩展的。
介绍很高兴能向大家介绍 Gradle,这是一个基于 JVM 的富有突破性构建工具。它为您提供了:一个像 ant 一样,通用的灵活的构建工具一种可切换的,像 maven 一样的基于约定约定优于配置的构建框架强大的多工程构建支持强大的依赖管理(基于 ApacheIvy)对已有的 maven 和 ivy 仓库的全面支持支持传递性依赖管理,而不需要远程仓库或者 pom.
Spring 的每个项目都独立的项目组在开发运营,在用户最常使用的白盒部分(例如 API 设计)保持一致性,对于用户不可见的黑盒部分,各个项目组选择自己适合工具没有统一的约定。
Gradle的安装非常方便,下载ZIP包,解压到本地目录,设置 GRADLE_HOME 环境变量并将 GRADLE_HOME/bin 加到 PATH 环境变量中,安装就完成了。用户可以运行gradle -v命令验证安装,这些初始的步骤和Maven没什么两样。我这里安装的Gradle版本是1.10,详细信息见下: ᐅ gradle -v ------------------------------------------------------------ Gradle 1.
Gradle 在它的核心中有意地提供了一些小但有用的功能,用于在真实世界中的自动化。所有有用的功能,例如以能够编译 Java 代码为例,都是通过插件进行添加的。插件添加了新任务 (例如 JavaCompile),域对象 (例如 SourceSet ),约定(例如主要的 Java 源代码是位于 src/main/java ),以及扩展的核心对象和其他插件的对象。
日志是构建工具的主要"UI"。如果日志太多,真正的警告和问题容易被隐藏。另一方面,如果出了错,你需要找出相关的信息。Gradle 定义了6个日志级别,如表 Table 18.1, “Log levels” 所示。除了那些您通过可能会平常看到的日志级别之外,有两个 Gradle 特定日志级别。这两个级别分别是 QUIET 和 LIFECYCLE。 默认使用后面的这个日志级别,用于报告构建进度。
处理问题当你遇到问题,首先是更新到最新版本。最新版一般是修复了 bug 和添加了新特性。如果您使用的是 Gradle Daemon 守护进程,尝试暂时禁用该守护进程(您可以通过命令行 --no-daemon)。有关故障排除的守护进程的更多信息,位于Chapter 19. The Gradle Daemon 守护进程获取帮助在线论坛http://forums.gradle.org. 可以提问或者建议。
前置条件Gradle 需要 Java JDK 或者 JRE,版本是 6 及以上。Gradle 将会装载自己的 Groovy 库,因此,Groovy 不需要被安装。任何存在的 Groovy 安装都会被 Gradle 忽略。Gradle 使用你 path 中的 JDK,或者,您可以设置 java_home 环境变量来指向所需的 JDK 安装目录。下载下载 Gradle 的发布包.解压Gradle 的发布包被打包成 ZIP。
特性下面列出了一些 Gradle 的特性:声明式构建,符合公约gradle 的核心是在 基于 Groovy 对 Domain Specific Language (DSL)语言进行一个丰富的扩展。根据喜好,Gradle 将陈述建立下一级提供声明性语言元素。这些元素也提供支持 Java,Groovy,OSGi,Web和Scala 项目。甚至更多,这说明语言是可扩展的。
Gradle 为Java(JVM)世界提供快速构建的工具。提供如下功能:一个非常灵活的通用构建工具,如 Ant方便从 Maven 中切换过来。但我们从不强制对多项目构建非常支持很强的依赖性管理(基于 Apache Ivy)对你现有的 Maven 或者 Ivy 库全力支持支持传递依赖管理,不需要远程仓库或者 pom.xml 和 ivy.
OSGi 插件提供了工厂方法来创建一个 OsgiManifest 对象。OsgiManifest 继承自 Manifest。如果应用了 Java 插件,OSGi 插件将把默认 jar 的 manifest 对象替换为一个 OsgiManifest 对象。被替换的 manifest 会被合并到新的对象单中。OSGi 插件使 Peter Kriens BND tool 大量使用。用法要使用 OSGi 插件,请在构建脚本中包含以下语句: 使用 OSGi 插件build.
你可能会想使用新的 Sonar Runner 插件来代替现在这个插件。尤其是因为只有 Sonar Runner 插件支持 Sonar 3.4 及更高的版本。 Sonar 插件提供了对 Sonar,一个基于 web 的代码质量监测平台的集成。该插件添加了sonarAnalyze task ,用来分析一个 project 及子 project 都应用了哪个插件。分析结果存储于 Sonar 数据库中。该插件基于 Sonar Runner,并要求是 Sonar 2.
JaCoCo 插件目前还是孵化中状态。请务必注意,在以后的 Gradle 版本中,DSL 和其他配置可能会有所改变。 JaCoCo 插件通过集成 JaCoCo为 Java 代码提供了代码覆盖率指标。入门要想开始,请将 JaCoCo 插件应用于你想要计算代码覆盖率的项目中。应用 JaCoCo 插件build.
PMD 插件使用 PMD 对项目的 Java 源文件执行质量检查,并从检查结果中生成报告。 用法要使用 PMD 插件,请在构建脚本中包含以下语句:使用 PMD 插件build.gradle apply plugin: 'pmd' 该插件向你的项目添加了大量的执行质量检查的任务。你可以通过运行 gradle check 执行检查。任务PMD 插件向 project 中添加了以下任务:表 33.1.
关注时代Java