Gradle,这是一个基于 JVM 的富有突破性构建工具。Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目。本教程主要讲解了如何使用 Gradle 构建系统和构建系统过程中涉及的插件。适合人群适用于自动化地进行软件构建、测试、发布、部署、软件打包的项目。学习前提你需要有 Groovy 语言基础,对 Java 应用开发有一定的了解。
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.
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.
JDepend 插件使用 JDepend 对项目的源文件执行质量检查,并从检查结果中生成报告。用法要使用 JDepend 插件,请在构建脚本中包含以下语句:使用 JDepend 插件build.gradle apply plugin: 'jdepend' 该插件向你的项目添加了大量的执行质量检查的任务。你可以通过运行 gradle check 执行检查。任务JDepend 插件向 project 中添加了以下任务:表 32.1.
FindBugs 插件使用 FindBugs 对项目的 Java 源文件执行质量检查,并从检查结果中生成报告。用法要使用 FindBugs 插件,请在构建脚本中包含以下语句:使用 FindBugs 插件build.gradle apply plugin: 'findbugs' 该插件向你的项目添加了大量的执行质量检查的任务。你可以通过运行 gradle check 执行检查。任务FindBugs 插件向 project 中添加了以下任务:表 31.1.
CodeNarc 插件使用 CodeNarc 对项目的 Groovy 源文件执行质量检查并生成报告。用法要使用 CodeNarc 插件,请在构建脚本中包含以下语句:使用 CodeNarc 插件build.gradle apply plugin: 'codenarc' 该插件向你的项目添加了大量的执行质量检查的任务。你可以通过运行 gradle check 执行检查。任务CodeNarc 插件向project 中添加了以下任务:表 30.1.
Checkstyle 插件使用 Checkstyle 对你的项目的 Java 源文件执行质量检查,并从检查结果中生成报告。用法要使用 Checkstyle 插件,请在构建脚本中包含以下语句:使用 Checkstyle 插件build.gradle apply plugin: 'checkstyle' 该插件向你的项目添加了大量的执行质量检查的任务。你可以通过运行 gradle check 执行检查。
Jetty 插件继承自 War 插件,并添加一些任务,这些任务可以让你在构建时部署你的 web 应用程序到一个 Jetty 的 web 嵌入式容器中。用法要使用 Jetty 的插件,请在构建脚本中包含以下语句:使用 Jetty 插件build.gradle apply plugin: 'jetty' 任务Jetty 插件定义了以下任务:表 28.1.
Ear 插件添加了用于组装 web 应用程序的 EAR 文件的支持。它添加了一个默认的 EAR archive task。它不需要 Java 插件,但是对于使用了 Java 插件的项目,它将禁用默认的 JAR archive 的生成。用法要使用 Ear 的插件,请在构建脚本中包含以下语句:使用 Ear 插件build.gradle apply plugin: 'ear' TasksEar 插件向 project 中添加了以下任务。表 27.1.
War 的插件继承自 Java 插件并添加了对组装 web 应用程序的 WAR 文件的支持。它禁用了 Java 插件生成默认的 JAR archive,并添加了一个默认的 WAR archive 任务。用法要使用 War 的插件,请在构建脚本中包含以下语句:使用 War 插件build.gradle apply plugin: 'war' 任务War 插件向 project 中添加了以下任务。表 26.1.
Scala 的插件继承自 Java 插件并添加了对 Scala 项目的支持。它可以处理 Scala 代码,以及混合的 Scala 和 Java 代码,甚至是纯 Java 代码(尽管我们不一定推荐使用)。该插件支持联合编译,联合编译可以通过 Scala 及 Java 的各自的依赖任意地混合及匹配它们的代码。例如,一个 Scala 类可以继承自一个 Java 类,而这个 Java 类也可以继承自一个 Scala 类。
Groovy 的插件继承自 Java 插件并添加了对 Groovy 项目的支持。它可以处理 Groovy 代码,以及混合的 Groovy 和 Java 代码,甚至是纯 Java 代码(尽管我们不一定推荐使用)。该插件支持联合编译,可以任意地混合及匹配 Groovy 和 Java 代码各自的依赖。例如,一个 Groovy 类可以继承自一个 Java 类,而这个 Java 类也可以继承自一个 Groovy 类。
Java 插件向一个项目添加了 Java 编译、 测试和 bundling 的能力。它是很多其他 Gradle 插件的基础服务。用法要使用 Java 插件,请在构建脚本中加入:使用 Java 插件build.gradle apply plugin: 'java' 源集Java 插件引入了一个源集的概念。一个源集只是一组用于编译并一起执行的源文件。这些源文件可能包括 Java 源代码文件和资源文件。
关注时代Java