Gradle 用户指南

Gradle User Guide

版本 2.0

Version 2.0

本文件的副本,无论其是以印刷版本形式还是电子版本形式,也无论是您自用,还是分发给他人,均为免费,并且每一份副本均需带有版权声明。
Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.

目录
Table of Contents

1. 导言 - Introduction
1.1. 关于本用户指南 - About this user guide
2. 概述 - Overview
2.1. 特性 - Features
2.2. 为什么使用 Groovy? - Why Groovy?
3. 教程 - Tutorials
3.1. 入门 - Getting Started
4. 安装 Gradle - Installing Gradle
4.1. 环境要求 - Prerequisites
4.2. 下载 - Download
4.3. 解压 - Unpacking
4.4. 环境变量 - Environment variables
4.5. 运行和测试您的安装 - Running and testing your installation
4.6. JVM 选项 - JVM options
5. 疑难解答 - Troubleshooting
5.1. 解决问题 - Working through problems
5.2. 获取帮助 - Getting help
6. 构建脚本基础 - Build Script Basics
6.1. 项目和任务 - Projects and tasks
6.2. Hello world
6.3. 快速任务定义 - A shortcut task definition
6.4. 构建脚本即代码 - Build scripts are code
6.5. 任务依赖 - Task dependencies
6.6. 动态任务 - Dynamic tasks
6.7. 操纵现有任务 - Manipulating existing tasks
6.8. 快捷符号 - Shortcut notations
6.9. 额外的任务属性 - Extra task properties
6.10. 使用 Ant 任务 - Using Ant Tasks
6.11. 使用方法 - Using methods
6.12. 默认任务 - Default tasks
6.13. 使用 DAG 配置 - Configure by DAG
6.14. 下一步目标? - Where to next?
7. Java 快速入门 - Java Quickstart
7.1. Java 插件 - The Java plugin
7.2. 一个基本的 Java 项目 - A basic Java project
7.3. 多项目的Java构建 - Multi-project Java build
7.4. 下一步目标? - Where to next?
8. 依赖管理基础 - Dependency Management Basics
8.1. 什么是依赖管理? - What is dependency management?
8.2. 声明依赖 - Declaring your dependencies
8.3. 依赖配置 - Dependency configurations
8.4. 外部依赖 - External dependencies
8.5. 仓库 - Repositories
8.6. 发布构件 - Publishing artifacts
8.7. 下一步目标? - Where to next?
9. Groovy 快速入门 - Groovy Quickstart
9.1. 一个基本的 Groovy 项目 - A basic Groovy project
9.2. 总结 - Summary
10. Web 应用程序快速入门 - Web Application Quickstart
10.1. 构建一个 WAR 文件 - Building a WAR file
10.2. 运行 web 应用程序 - Running your web application
10.3. 总结 - Summary
11. 使用 Gradle 命令行 - Using the Gradle Command-Line
11.1. 执行多个任务 - Executing multiple tasks
11.2. 排除任务 - Excluding tasks
11.3. 失败后继续构建 - Continuing the build when a failure occurs
11.4. 任务名缩写 - Task name abbreviation
11.5. 选择执行哪个构建 - Selecting which build to execute
11.6. 获取构建的相关信息 - Obtaining information about your build
11.7. 演练 - Dry Run
11.8. 总结 - Summary
12. 使用 Gradle 图形用户界面 - Using the Gradle Graphical User Interface
12.1. 任务树 - Task Tree
12.2. 收藏夹 - Favorites
12.3. 命令行 - Command Line
12.4. 设置 - Setup
13. 编写构建脚本 - Writing Build Scripts
13.1. Gradle 构建语言 - The Gradle build language
13.2. Project API - The Project API
13.3. Script API - The Script API
13.4. 声明变量 - Declaring variables
13.5. 一些 Groovy 基础知识 - Some Groovy basics
14. 教程——杂七杂八 - Tutorial - 'This and That'
14.1. 创建目录 - Directory creation
14.2. Gradle 属性和系统属性 - Gradle properties and system properties
14.3. 使用外部构建脚本配置项目 - Configuring the project using an external build script
14.4. 配置任意对象 - Configuring arbitrary objects
14.5. 使用外部脚本配置任意对象 - Configuring arbitrary objects using an external script
14.6. 缓存 - Caching
15. 任务详述 - More about Tasks
15.1. 定义任务 - Defining tasks
15.2. 查找任务 - Locating tasks
15.3. 配置任务 - Configuring tasks
15.4. 向任务添加依赖 - Adding dependencies to a task
15.5. 任务排序 - Ordering tasks
15.6. 向任务添加描述 - Adding a description to a task
15.7. 替换任务 - Replacing tasks
15.8. 跳过任务 - Skipping tasks
15.9. 跳过最新的任务 - Skipping tasks that are up-to-date
15.10. 任务规则 - Task rules
15.11. 析构器任务 - Finalizer tasks
15.12. 总结 - Summary
16. 使用文件 - Working With Files
16.1. 查找文件 - Locating files
16.2. 文件集合 - File collections
16.3. 文件树 - File trees
16.4. 使用归档的内容作为文件树 - Using the contents of an archive as a file tree
16.5. 指定一组输入文件 - Specifying a set of input files
16.6. 复制文件 - Copying files
16.7. 使用 Sync 任务 - Using the Sync task
16.8. 创建归档文件 - Creating archives
17. 从 Gradle 中调用 Ant - Using Ant from Gradle
17.1. 在构建中使用 Ant 任务和类型 - Using Ant tasks and types in your build
17.2. 导入 Ant 构建 - Importing an Ant build
17.3. Ant 属性和引用 - Ant properties and references
17.4. API
18. 日志 - Logging
18.1. 选择一个日志级别 - Choosing a log level
18.2. 编写自己的日志消息 - Writing your own log messages
18.3. 使用外部的工具和库来写日志 - Logging from external tools and libraries
18.4. 更改 Gradle 日志 - Changing what Gradle logs
19. Gradle 守护进程 - The Gradle Daemon
19.1. 走进守护进程 - Enter the daemon
19.2. 守护进程的重用和过期 - Reusing and expiration of daemons
19.3. 用法和故障排除 - Usage and troubleshooting
19.4. 配置守护进程 - Configuring the daemon
20. 构建环境 - The Build Environment
20.1. 通过 gradle.properties 配置构建环境 - Configuring the build environment via gradle.properties
20.2. 通过代理访问网络 - Accessing the web via a proxy
21. Gradle 插件 - Gradle Plugins
21.1. 应用插件 - Applying plugins
21.2. 插件都做了什么 - What plugins do
21.3. 约定 - Conventions
21.4. 更多关于插件的内容 - More on plugins
22. 标准的 Gradle 插件 - Standard Gradle plugins
22.1. 语言插件 - Language plugins
22.2. 试验性的语言插件 - Incubating language plugins
22.3. 集成插件 - Integration plugins
22.4. 试验性的集成插件 - Incubating integration plugins
22.5. 软件开发插件 - Software development plugins
22.6. 试验性的软件开发插件 - Incubating software development plugins
22.7. 基本插件 - Base plugins
22.8. 第三方插件 - Third party plugins
23. Java 插件 - The Java Plugin
23.1. 用法 - Usage
23.2. 源集 - Source sets
23.3. 任务 - Tasks
23.4. 项目布局 - Project layout
23.5. 依赖管理 - Dependency management
23.6. 约定属性 - Convention properties
23.7. 使用源集 - Working with source sets
23.8. Javadoc
23.9. Clean
23.10. Resources
23.11. CompileJava
23.12. Test
23.13. Jar
23.14. 上传 - Uploading
24. Groovy 插件 - The Groovy Plugin
24.1. 用法 - Usage
24.2. 任务 - Tasks
24.3. 项目布局 - Project layout
24.4. 依赖管理 - Dependency management
24.5. groovyClasspath 的自动配置 - Automatic configuration of groovyClasspath
24.6. 约定属性 - Convention properties
24.7. 源集属性 - Source set properties
24.8. GroovyCompile
25. Scala 插件 - The Scala Plugin
25.1. 用法 - Usage
25.2. 任务 - Tasks
25.3. 项目布局 - Project layout
25.4. 依赖管理 - Dependency management
25.5. scalaClasspath 的自动配置 - Automatic configuration of scalaClasspath
25.6. 约定属性 - Convention properties
25.7. 源集属性 - Source set properties
25.8. Fast Scala Compiler
25.9. 在外部进程中编译 - Compiling in external process
25.10. 增量编译 - Incremental compilation
25.11. Eclipse 集成 - Eclipse Integration
25.12. IntelliJ IDEA 集成 - IntelliJ IDEA Integration
26. War 插件 - The War Plugin
26.1. 用法 - Usage
26.2. 任务 - Tasks
26.3. 项目布局 - Project layout
26.4. 依赖管理 - Dependency management
26.5. 约定属性 - Convention properties
26.6. War
26.7. 自定义 - Customizing
27. Ear 插件 - The Ear Plugin
27.1. 用法 - Usage
27.2. 任务 - Tasks
27.3. 项目布局 - Project layout
27.4. 依赖管理 - Dependency management
27.5. 约定属性 - Convention properties
27.6. Ear
27.7. 自定义 - Customizing
27.8. 使用自定义的描述符文件 - Using custom descriptor file
28. Jetty 插件 - The Jetty Plugin
28.1. 用法 - Usage
28.2. 任务 - Tasks
28.3. 项目布局 - Project layout
28.4. 依赖管理 - Dependency management
28.5. 约定属性 - Convention properties
29. Checkstyle 插件 - The Checkstyle Plugin
29.1. 用法 - Usage
29.2. 任务 - Tasks
29.3. 项目布局 - Project layout
29.4. 依赖管理 - Dependency management
29.5. 配置 - Configuration
30. CodeNarc 插件 - The CodeNarc Plugin
30.1. 用法 - Usage
30.2. 任务 - Tasks
30.3. 项目布局 - Project layout
30.4. 依赖管理 - Dependency management
30.5. 配置 - Configuration
31. FindBugs 插件 - The FindBugs Plugin
31.1. 用法 - Usage
31.2. 任务 - Tasks
31.3. 依赖管理 - Dependency management
31.4. 配置 - Configuration
32. JDepend 插件 - The JDepend Plugin
32.1. 用法 - Usage
32.2. 任务 - Tasks
32.3. 依赖管理 - Dependency management
32.4. 配置 - Configuration
33. PMD 插件 - The PMD Plugin
33.1. 用法 - Usage
33.2. 任务 - Tasks
33.3. 依赖管理 - Dependency management
33.4. 配置 - Configuration
34. JaCoCo 插件 - The JaCoCo Plugin
34.1. 入门 - Getting Started
34.2. 配置 JaCoCo 插件 - Configuring the JaCoCo Plugin
34.3. JaCoCo 报告配置 - JaCoCo Report configuration
34.4. JaCoCo 的特定任务配置 - JaCoCo specific task configuration
34.5. 任务 - Tasks
34.6. 依赖管理 - Dependency management
35. Sonar 插件 - The Sonar Plugin
35.1. 用法 - Usage
35.2. 分析多项目构建 - Analyzing Multi-Project Builds
35.3. 分析自定义源集 - Analyzing Custom Source Sets
35.4. 分析非 Java 语言 - Analyzing languages other than Java
35.5. 设置自定义的 Sonar 属性 - Setting Custom Sonar Properties
35.6. 从命令行配置 Sonar 的设置 - Configuring Sonar Settings from the Command Line
35.7. 任务 - Tasks
36. Sonar Runner 插件 - The Sonar Runner Plugin
36.1. 插件状态和兼容性 - Plugin Status and Compatibility
36.2. 入门 - Getting Started
36.3. 配置 Sonar Runner - Configuring the Sonar Runner
36.4. 分析多项目构建 - Analyzing Multi-Project Builds
36.5. 分析自定义源集 - Analyzing Custom Source Sets
36.6. 分析非 Java 语言 - Analyzing languages other than Java
36.7. 有关配置 Sonar 属性的更多信息 - More on configuring Sonar properties
36.8. 从命令行设置 Sonar 属性。 - Setting Sonar Properties from the Command Line
36.9. 在一个单独的进程中执行 Sonar Runner - Executing Sonar Runner in a separate process
36.10. 任务 - Tasks
37. OSGi 插件 - The OSGi Plugin
37.1. 用法 - Usage
37.2. 隐式应用插件 - Implicitly applied plugins
37.3. 任务 - Tasks
37.4. 依赖管理 - Dependency management
37.5. 公约对象 - Convention object
37.6.
38. Eclipse 插件 - The Eclipse Plugin
38.1. 用法 - Usage
38.2. 任务 - Tasks
38.3. 配置 - Configuration
38.4. 自定义生成的文件 - Customizing the generated files
39. IDEA 插件 - The IDEA Plugin
39.1. 用法 - Usage
39.2. 任务 - Tasks
39.3. 配置 - Configuration
39.4. 自定义生成的文件 - Customizing the generated files
39.5. 还需要考虑的事情 - Further things to consider
40. ANTLR 插件 - The ANTLR Plugin
40.1. 用法 - Usage
40.2. 任务 - Tasks
40.3. 项目布局 - Project layout
40.4. 依赖管理 - Dependency management
40.5. 约定属性 - Convention properties
40.6. 源集属性 - Source set properties
41. 项目报告插件 - The Project Report Plugin
41.1. 用法 - Usage
41.2. 任务 - Tasks
41.3. 项目布局 - Project layout
41.4. 依赖管理 - Dependency management
41.5. 约定属性 - Convention properties
42. 公告插件 - The Announce Plugin
42.1. 用法 - Usage
42.2. 配置 - Configuration
43. 构建公告插件 - The Build Announcements Plugin
43.1. 用法 - Usage
44. 分发插件 - The Distribution Plugin
44.1. 用法 - Usage
44.2. 任务 - Tasks
44.3. 分发内容 - Distribution contents
45. 应用程序插件 - The Application Plugin
45.1. 用法 - Usage
45.2. 任务 - Tasks
45.3. 约定属性 - Convention properties
45.4. 在分发中包含其他资源 - Including other resources in the distribution
46. Java 库发布插件 - The Java Library Distribution Plugin
46.1. 用法 - Usage
46.2. 任务 - Tasks
46.3. 在分发中包含其他资源 - Including other resources in the distribution
47. 构建初始化插件 - Build Init Plugin
47.1. 任务 - Tasks
47.2. 要设置什么 - What to set up
47.3. 构建初始化类型 - Build init types
48. 包装插件 - Wrapper Plugin
48.1. 用法 - Usage
48.2. 任务 - Tasks
49. 构建仪表盘插件 - The Build Dashboard Plugin
49.1. 用法 - Usage
49.2. 任务 - Tasks
49.3. 项目布局 - Project layout
49.4. 依赖管理 - Dependency management
49.5. 配置 - Configuration
50. 依赖管理 - Dependency Management
50.1. 导言 - Introduction
50.2. 依赖管理最佳实践 - Dependency Management Best Practices
50.3. 依赖配置 - Dependency configurations
50.4. 如何声明依赖 - How to declare your dependencies
50.5. 使用依赖 - Working with dependencies
50.6. 仓库 - Repositories
50.7. 依赖解析的工作原理 - How dependency resolution works
50.8. 微调依赖解析过程 - Fine-tuning the dependency resolution process
50.9. 依赖缓存 - The dependency cache
50.10. 传递依赖管理的策略 - Strategies for transitive dependency management
51. 发布构件 - Publishing artifacts
51.1. 导言 - Introduction
51.2. 工件和配置 - Artifacts and configurations
51.3. 声明工件 - Declaring artifacts
51.4. 发布构件 - Publishing artifacts
51.5. 关于项目库的更多信息 - More about project libraries
52. Maven 插件 - The Maven Plugin
52.1. 用法 - Usage
52.2. 任务 - Tasks
52.3. 依赖管理 - Dependency management
52.4. 约定属性 - Convention properties
52.5. 约定方法 - Convention methods
52.6. 与 Maven 仓库的交互 - Interacting with Maven repositories
53. 签名插件 - The Signing Plugin
53.1. 用法 - Usage
53.2. 签名凭证 - Signatory credentials
53.3. 指定要签名的内容 - Specifying what to sign
53.4. 发布签名 - Publishing the signatures
53.5. 签名 POM 文件 - Signing POM files
54. 构建本机二进制文件 - Building native binaries
54.1. 受支持的语言 - Supported languages
54.2. 工具链支持 - Tool chain support
54.3. 组件模型 - Component model
54.4. 任务 - Tasks
54.5. 语言支持 - Language support
54.6. 配置编译器、汇编器和连接器 - Configuring the compiler, assembler and linker
54.7. Windows Resources
54.8. 库依赖 - Library Dependencies
54.9. 本机二进制变体 - Native Binary Variants
54.10. 工具链 - Tool chains
54.11. Visual Studio IDE 集成 - Visual Studio IDE integration
54.12. CUnit 支持 - CUnit support
55. 构建的生命周期 - The Build Lifecycle
55.1. 构建阶段 - Build phases
55.2. 设置文件 - Settings file
55.3. 多项目构建 - Multi-project builds
55.4. 初始化 - Initialization
55.5. 单项目构建的配置和执行 - Configuration and execution of a single project build
55.6. 构建脚本生命周期的响应 - Responding to the lifecycle in the build script
56. 多项目构建 - Multi-project Builds
56.1. 跨项目配置 - Cross project configuration
56.2. 子项目配置 - Subproject configuration
56.3. 多项目构建的执行规则 - Execution rules for multi-project builds
56.4. 按绝对路径运行任务 - Running tasks by their absolute path
56.5. 项目和任务路径 - Project and task paths
56.6. 依赖——哪些依赖? - Dependencies - Which dependencies?
56.7. 项目库依赖 - Project lib dependencies
56.8. 并行项目执行 - Parallel project execution
56.9. 解耦的项目 - Decoupled Projects
56.10. 多项目构建和测试 - Multi-Project Building and Testing
56.11. 属性和方法的继承 - Property and method inheritance
56.12. 总结 - Summary
57. 编写自定义任务类 - Writing Custom Task Classes
57.1. 封装一个任务类 - Packaging a task class
57.2. 编写一个简单的任务类 - Writing a simple task class
57.3. 独立项目 - A standalone project
57.4. 增量任务 - Incremental tasks
58. 编写自定义插件 - Writing Custom Plugins
58.1. 打包插件 - Packaging a plugin
58.2. 编写一个简单的插件 - Writing a simple plugin
58.3. 从构建中获取输入 - Getting input from the build
58.4. 在自定义任务和插件中使用文件 - Working with files in custom tasks and plugins
58.5. 独立项目 - A standalone project
58.6. 维护多个域对象 - Maintaining multiple domain objects
59. 组织构建逻辑 - Organizing Build Logic
59.1. 继承的属性和方法 - Inherited properties and methods
59.2. 注入配置 - Injected configuration
59.3. 在 buildSrc 项目中的构建源码 - Build sources in the buildSrc project
59.4. 从一个构建中运行另一个 Gradle 构建 - Running another Gradle build from a build
59.5. 构建脚本的外部依赖 - External dependencies for the build script
59.6. Ant 可选依赖 - Ant optional dependencies
59.7. 总结 - Summary
60. 初始化脚本 - Initialization Scripts
60.1. 基本用法 - Basic usage
60.2. 使用 init 脚本 - Using an init script
60.3. 写一个 init 脚本 - Writing an init script
60.4. init 脚本的外部依赖 - External dependencies for the init script
60.5. Init 脚本插件 - Init script plugins
61. Gradle 包装器 - The Gradle Wrapper
61.1. 配置 - Configuration
61.2. Unix 文件权限 - Unix file permissions
62. 嵌入Gradle - Embedding Gradle
62.1. Tooling API 简介 - Introduction to the Tooling API
62.2. Tooling API 及 Gradle 构建守护进程 - Tooling API and the Gradle Build Daemon
62.3. 快速入门 - Quickstart
63. 比较构建 - Comparing Builds
63.1. 术语定义 - Definition of terms
63.2. 当前功能 - Current Capabilities
63.3. 比较Gradle构建 - Comparing Gradle Builds
64. Ivy发布(新) - Ivy Publishing (new)
64.1. “ivy-publish”插件 - The “ivy-publish” Plugin
64.2. 发布 - Publications
64.3. 仓库 - Repositories
64.4. 执行发布 - Performing a publish
64.5. 生成 Ivy 模块的描述符文件而不发布 - Generating the Ivy module descriptor file without publishing
64.6. 完整的示例 - Complete example
64.7. 未来特性 - Future features
65. Maven 发布(新) - Maven Publishing (new)
65.1. “maven-publish” 插件 - The “maven-publish” Plugin
65.2. 发布 - Publications
65.3. 仓库 - Repositories
65.4. 执行发布 - Performing a publish
65.5. 发布到Maven本地库 - Publishing to Maven Local
65.6. 生成POM文件而不发布 - Generating the POM file without publishing
A. Gradle 示例
A. Gradle Samples
A.1. 示例 customBuildLanguage - Sample customBuildLanguage
A.2. 示例 customDistribution - Sample customDistribution
A.3. 示例 customPlugin - Sample customPlugin
A.4. f示例 java/multiproject - Sample java/multiproject
B. 潜在陷阱
B. Potential Traps
B.1. Groovy 脚本变量 - Groovy script variables
B.2. 配置和执行阶段 - Configuration and execution phase
C. 功能生命周期
C. The Feature Lifecycle
C.1. 状态 - States
C.2. 向后兼容策略 - Backwards Compatibility Policy
D. Gradle命令行
D. Gradle Command Line
D.1. 守护程序命令行选项: - Daemon command-line options:
D.2. 系统属性 - System properties
D.3. 环境变量 - Environment variables
E. 现有的 IDE 支持及没有它时如何应对
E. Existing IDE Support and how to cope without it
E.1. IntelliJ
E.2. Eclipse
E.3. 在没有 IDE 支持的情况下使用 Gradle - Using Gradle without IDE support
词汇表
Glossary

示例列表
List of Examples

6.1. The first build script
6.2. Execution of a build script
6.3. A task definition shortcut
6.4. Using Groovy in Gradle's tasks
6.5. Using Groovy in Gradle's tasks
6.6. Declaration of dependencies between tasks
6.7. Lazy dependsOn - the other task does not exist (yet)
6.8. Dynamic creation of a task
6.9. Accessing a task via API - adding a dependency
6.10. Accessing a task via API - adding behaviour
6.11. Accessing task as a property of the build script
6.12. Adding extra properties to a task
6.13. Using AntBuilder to execute ant.loadfile target
6.14. Using methods to organize your build logic
6.15. Defining a default tasks
6.16. Different outcomes of build depending on chosen tasks
7.1. Using the Java plugin
7.2. Building a Java project
7.3. Adding Maven repository
7.4. Adding dependencies
7.5. Customization of MANIFEST.MF
7.6. Adding a test system property
7.7. Publishing the JAR file
7.8. Eclipse plugin
7.9. Java example - complete build file
7.10. Multi-project build - hierarchical layout
7.11. Multi-project build - settings.gradle file
7.12. Multi-project build - common configuration
7.13. Multi-project build - dependencies between projects
7.14. Multi-project build - distribution file
8.1. Declaring dependencies
8.2. Definition of an external dependency
8.3. Shortcut definition of an external dependency
8.4. Usage of Maven central repository
8.5. Usage of a remote Maven repository
8.6. Usage of a remote Ivy directory
8.7. Usage of a local Ivy directory
8.8. Publishing to an Ivy repository
8.9. Publishing to a Maven repository
9.1. Groovy plugin
9.2. Dependency on Groovy 2.2.0
9.3. Groovy example - complete build file
10.1. War plugin
10.2. Running web application with Jetty plugin
11.1. Executing multiple tasks
11.2. Excluding tasks
11.3. Abbreviated task name
11.4. Abbreviated camel case task name
11.5. Selecting the project using a build file
11.6. Selecting the project using project directory
11.7. Obtaining information about projects
11.8. Providing a description for a project
11.9. Obtaining information about tasks
11.10. Changing the content of the task report
11.11. Obtaining more information about tasks
11.12. Obtaining detailed help for tasks
11.13. Obtaining information about dependencies
11.14. Filtering dependency report by configuration
11.15. Getting the insight into a particular dependency
11.16. Information about properties
12.1. Launching the GUI
13.1. Accessing property of the Project object
13.2. Using local variables
13.3. Using extra properties
13.4. Groovy JDK methods
13.5. Property accessors
13.6. Method call without parentheses
13.7. List and map literals
13.8. Closure as method parameter
13.9. Closure delegates
14.1. Directory creation with mkdir
14.2. Setting properties with a gradle.properties file
14.3. Configuring the project using an external build script
14.4. Configuring arbitrary objects
14.5. Configuring arbitrary objects using a script
15.1. Defining tasks
15.2. Defining tasks - using strings for task names
15.3. Defining tasks with alternative syntax
15.4. Accessing tasks as properties
15.5. Accessing tasks via tasks collection
15.6. Accessing tasks by path
15.7. Creating a copy task
15.8. Configuring a task - various ways
15.9. Configuring a task - with closure
15.10. Defining a task with closure
15.11. Adding dependency on task from another project
15.12. Adding dependency using task object
15.13. Adding dependency using closure
15.14. Adding a 'must run after' task ordering
15.15. Adding a 'should run after' task ordering
15.16. Task ordering does not imply task execution
15.17. A 'should run after' task ordering is ignored if it introduces an ordering cycle
15.18. Adding a description to a task
15.19. Overwriting a task
15.20. Skipping a task using a predicate
15.21. Skipping tasks with StopExecutionException
15.22. Enabling and disabling tasks
15.23. A generator task
15.24. Declaring the inputs and outputs of a task
15.25. Task rule
15.26. Dependency on rule based tasks
15.27. Adding a task finalizer
15.28. Task finalizer for a failing task
16.1. Locating files
16.2. Creating a file collection
16.3. Using a file collection
16.4. Implementing a file collection
16.5. Creating a file tree
16.6. Using a file tree
16.7. Using an archive as a file tree
16.8. Specifying a set of files
16.9. Specifying a set of files
16.10. Copying files using the copy task
16.11. Specifying copy task source files and destination directory
16.12. Selecting the files to copy
16.13. Copying files using the copy() method without up-to-date check
16.14. Copying files using the copy() method with up-to-date check
16.15. Renaming files as they are copied
16.16. Filtering files as they are copied
16.17. Nested copy specs
16.18. Using the Sync task to copy dependencies
16.19. Creating a ZIP archive
16.20. Creation of ZIP archive
16.21. Configuration of archive task - custom archive name
16.22. Configuration of archive task - appendix & classifier
17.1. Using an Ant task
17.2. Passing nested text to an Ant task
17.3. Passing nested elements to an Ant task
17.4. Using an Ant type
17.5. Using a custom Ant task
17.6. Declaring the classpath for a custom Ant task
17.7. Using a custom Ant task and dependency management together
17.8. Importing an Ant build
17.9. Task that depends on Ant target
17.10. Adding behaviour to an Ant target
17.11. Ant target that depends on Gradle task
17.12. Setting an Ant property
17.13. Getting an Ant property
17.14. Setting an Ant reference
17.15. Getting an Ant reference
18.1. Using stdout to write log messages
18.2. Writing your own log messages
18.3. Using SLF4J to write log messages
18.4. Configuring standard output capture
18.5. Configuring standard output capture for a task
18.6. Customizing what Gradle logs
20.1. Configuring an HTTP proxy
20.2. Configuring an HTTPS proxy
21.1. Applying a plugin
21.2. Applying a plugin by type
21.3. Applying a plugin by type
21.4. Tasks added by a plugin
21.5. Changing plugin defaults
21.6. Plugin convention object
23.1. Using the Java plugin
23.2. Custom Java source layout
23.3. Accessing a source set
23.4. Configuring the source directories of a source set
23.5. Defining a source set
23.6. Defining source set dependencies
23.7. Compiling a source set
23.8. Assembling a JAR for a source set
23.9. Generating the Javadoc for a source set
23.10. Running tests in a source set
23.11. Filtering tests in the build script
23.12. JUnit Categories
23.13. Grouping TestNG tests
23.14. Creating a unit test report for subprojects
23.15. Customization of MANIFEST.MF
23.16. Creating a manifest object.
23.17. Separate MANIFEST.MF for a particular archive
23.18. Separate MANIFEST.MF for a particular archive
24.1. Using the Groovy plugin
24.2. Custom Groovy source layout
24.3. Configuration of Groovy dependency
24.4. Configuration of Groovy test dependency
24.5. Configuration of bundled Groovy dependency
24.6. Configuration of Groovy file dependency
25.1. Using the Scala plugin
25.2. Custom Scala source layout
25.3. Declaring a Scala dependency for production code
25.4. Declaring a Scala dependency for test code
25.5. Enabling the Fast Scala Compiler
25.6. Adjusting memory settings
25.7. Activating the Zinc based compiler
26.1. Using the War plugin
26.2. Customization of war plugin
27.1. Using the Ear plugin
27.2. Customization of ear plugin
28.1. Using the Jetty plugin
29.1. Using the Checkstyle plugin
30.1. Using the CodeNarc plugin
31.1. Using the FindBugs plugin
32.1. Using the JDepend plugin
33.1. Using the PMD plugin
34.1. Applying the JaCoCo plugin
34.2. Configuring JaCoCo plugin settings
34.3. Configuring test task
34.4. Configuring test task
34.5. Using application plugin to generate code coverage data
34.6. Coverage reports generated by applicationCodeCoverageReport
35.1. Applying the Sonar plugin
35.2. Configuring Sonar connection settings
35.3. Configuring Sonar project settings
35.4. Global configuration in a multi-project build
35.5. Common project configuration in a multi-project build
35.6. Individual project configuration in a multi-project build
35.7. Configuring the language to be analyzed
35.8. Using property syntax
35.9. Analyzing custom source sets
35.10. Analyzing languages other than Java
35.11. Setting custom global properties
35.12. Setting custom project properties
35.13. Implementing custom command line properties
36.1. Applying the Sonar Runner plugin
36.2. Configuring Sonar connection settings
36.3. Global configuration settings
36.4. Shared configuration settings
36.5. Individual configuration settings
36.6. Skipping analysis of a project
36.7. Analyzing custom source sets
36.8. Analyzing languages other than Java
37.1. Using the OSGi plugin
37.2. Configuration of OSGi MANIFEST.MF file
38.1. Using the Eclipse plugin
38.2. Partial Overwrite for Classpath
38.3. Partial Overwrite for Project
38.4. Export Dependencies
38.5. Customizing the XML
39.1. Using the IDEA plugin
39.2. Partial Overwrite for Module
39.3. Partial Overwrite for Project
39.4. Export Dependencies
39.5. Customizing the XML
40.1. Using the ANTLR plugin
40.2. Declare ANTLR version
42.1. Using the announce plugin
42.2. Configure the announce plugin
42.3. Using the announce plugin
43.1. Using the build announcements plugin
43.2. Using the build announcements plugin from an init script
44.1. Using the distribution plugin
44.2. Adding extra distributions
44.3. Configuring the main distribution
45.1. Using the application plugin
45.2. Configure the application main class
45.3. Configure default JVM settings
45.4. Include output from other tasks in the application distribution
45.5. Automatically creating files for distribution
46.1. Using the java library distribution plugin
46.2. Configure the distribution name
46.3. Include files in the distribution
49.1. Using the Build Dashboard plugin
50.1. Definition of a configuration
50.2. Accessing a configuration
50.3. Configuration of a configuration
50.4. Module dependencies
50.5. Artifact only notation
50.6. Dependency with classifier
50.7. Iterating over a configuration
50.8. Client module dependencies - transitive dependencies
50.9. Project dependencies
50.10. File dependencies
50.11. Generated file dependencies
50.12. Gradle API dependencies
50.13. Gradle's Groovy dependencies
50.14. Excluding transitive dependencies
50.15. Optional attributes of dependencies
50.16. Collections and arrays of dependencies
50.17. Dependency configurations
50.18. Dependency configurations for project
50.19. Configuration.copy
50.20. Accessing declared dependencies
50.21. Configuration.files
50.22. Configuration.files with spec
50.23. Configuration.copy
50.24. Configuration.copy vs. Configuration.files
50.25. Declaring a Maven and Ivy repository
50.26. Providing credentials to a Maven and Ivy repository
50.27. Adding central Maven repository
50.28. Adding Bintray's JCenter Maven repository
50.29. Adding the local Maven cache as a repository
50.30. Adding custom Maven repository
50.31. Adding additional Maven repositories for JAR files
50.32. Accessing password protected Maven repository
50.33. Flat repository resolver
50.34. Ivy repository
50.35. Ivy repository with named layout
50.36. Ivy repository with pattern layout
50.37. Ivy repository with multiple custom patterns
50.38. Ivy repository with Maven compatible layout
50.39. Ivy repository
50.40. Accessing a repository
50.41. Configuration of a repository
50.42. Definition of a custom repository
50.43. Forcing consistent version for a group of libraries
50.44. Using a custom versioning scheme
50.45. Blacklisting a version with a replacement
50.46. Changing dependency group and/or name at the resolution
50.47. Enabling dynamic resolve mode
50.48. 'Latest' version selector
50.49. Custom status scheme
50.50. Dynamic version cache control
50.51. Changing module cache control
51.1. Defining an artifact using an archive task
51.2. Defining an artifact using a file
51.3. Customizing an artifact
51.4. Map syntax for defining an artifact using a file
51.5. Configuration of the upload task
52.1. Using the Maven plugin
52.2. Creating a stand alone pom.
52.3. Upload of file to remote Maven repository
52.4. Upload of file via SSH
52.5. Customization of pom
52.6. Builder style customization of pom
52.7. Modifying auto-generated content
52.8. Customization of Maven installer
52.9. Generation of multiple poms
52.10. Accessing a mapping configuration
53.1. Using the Signing plugin
53.2. Signing a configuration
53.3. Signing a configuration output
53.4. Signing a task
53.5. Signing a task output
53.6. Conditional signing
53.7. Signing a POM for deployment
54.1. Defining a library component
54.2. Defining executable components
54.3. The 'cpp' plugin
54.4. C++ source set
54.5. The 'c' plugin
54.6. C source set
54.7. The 'assembler' plugin
54.8. The 'objective-c' plugin
54.9. The 'objective-cpp' plugin
54.10. Settings that apply to all binaries
54.11. Settings that apply to all shared libraries
54.12. Settings that apply to all binaries produced for the 'main' executable component
54.13. Settings that apply only to shared libraries produced for the 'main' library component
54.14. The 'windows-resources' plugin
54.15. Configuring the location of Windows resource sources
54.16. Building a resource-only dll
54.17. Providing a library dependency to the source set
54.18. Providing a library dependency to the binary
54.19. Declaring project dependencies
54.20. Defining build types
54.21. Configuring debug binaries
54.22. Defining platforms
54.23. Defining flavors
54.24. Targeting a component at particular platforms
54.25. Building all possible variants
54.26. Defining tool chains
54.27. Reconfigure tool arguments
54.28. Defining target platforms
54.29. Registering CUnit tests
54.30. Registering CUnit tests
54.31. Running CUnit tests
55.1. Single project build
55.2. Hierarchical layout
55.3. Flat layout
55.4. Modification of elements of the project tree
55.5. Modification of elements of the project tree
55.6. Adding of test task to each project which has certain property set
55.7. Notifications
55.8. Setting of certain property to all tasks
55.9. Logging of start and end of each task execution
56.1. Multi-project tree - water & bluewhale projects
56.2. Build script of water (parent) project
56.3. Multi-project tree - water, bluewhale & krill projects
56.4. Water project build script
56.5. Defining common behaviour of all projects and subprojects
56.6. Defining specific behaviour for particular project
56.7. Defining specific behaviour for project krill
56.8. Adding custom behaviour to some projects (filtered by project name)
56.9. Adding custom behaviour to some projects (filtered by project properties)
56.10. Running build from subproject
56.11. Evaluation and execution of projects
56.12. Evaluation and execution of projects
56.13. Running tasks by their absolute path
56.14. Dependencies and execution order
56.15. Dependencies and execution order
56.16. Dependencies and execution order
56.17. Declaring dependencies
56.18. Declaring dependencies
56.19. Cross project task dependencies
56.20. Configuration time dependencies
56.21. Configuration time dependencies - evaluationDependsOn
56.22. Configuration time dependencies
56.23. Dependencies - real life example - crossproject configuration
56.24. Project lib dependencies
56.25. Project lib dependencies
56.26. Fine grained control over dependencies
56.27. Build and Test Single Project
56.28. Partial Build and Test Single Project
56.29. Build and Test Depended On Projects
56.30. Build and Test Dependent Projects
57.1. Defining a custom task
57.2. A hello world task
57.3. A customizable hello world task
57.4. A build for a custom task
57.5. A custom task
57.6. Using a custom task in another project
57.7. Testing a custom task
57.8. Defining an incremental task action
57.9. Running the incremental task for the first time
57.10. Running the incremental task with unchanged inputs
57.11. Running the incremental task with updated input files
57.12. Running the incremental task with an input file removed
57.13. Running the incremental task with an output file removed
57.14. Running the incremental task with an input property changed
58.1. A custom plugin
58.2. A custom plugin extension
58.3. A custom plugin with configuration closure
58.4. Evaluating file properties lazily
58.5. A build for a custom plugin
58.6. Wiring for a custom plugin
58.7. Using a custom plugin in another project
58.8. Testing a custom plugin
58.9. Managing domain objects
59.1. Using inherited properties and methods
59.2. Using injected properties and methods
59.3. Custom buildSrc build script
59.4. Adding subprojects to the root buildSrc project
59.5. Running another build from a build
59.6. Declaring external dependencies for the build script
59.7. A build script with external dependencies
59.8. Ant optional dependencies
60.1. Using init script to perform extra configuration before projects are evaluated
60.2. Declaring external dependencies for an init script
60.3. An init script with external dependencies
60.4. Using plugins in init scripts
61.1. Wrapper task
61.2. Wrapper generated files
64.1. Applying the “ivy-publish” plugin
64.2. Publishing a java module to Ivy
64.3. Publishing additional artifact to Ivy
64.4. customizing the publication identity
64.5. Customizing the module descriptor file
64.6. Publishing multiple modules from a single project
64.7. Declaring repositories to publish to
64.8. Choosing a particular publication to publish
64.9. Publishing all publications via the “publish” lifecycle task
64.10. Generating the Ivy module descriptor file
64.11. Publishing a java module
64.12. Example generated ivy.xml
65.1. Applying the 'maven-publish' plugin
65.2. Adding a MavenPublication for a java component
65.3. Adding additional artifact to a MavenPublication
65.4. customizing the publication identity
65.5. Modifying the POM file
65.6. Publishing multiple modules from a single project
65.7. Declaring repositories to publish to
65.8. Publishing a project to a Maven repository
65.9. Publish a project to the Maven local repository
65.10. Generate a POM file without publishing
B.1. Variables scope: local and script wide
B.2. Distinct configuration and execution phase