Gradle 1.12用户指南翻译——第二十一章. Gradle 插件
昨天晚上仅仅顾着和女朋友看《匆匆那年》电视剧的最后几集。所以说好的Android文档《Gradle 插件用户指南》第五章自然也没翻译多少。
所以今天也发不了第五章的翻译了,就发几个星期前译好的《Gradle 1.12用户指南》的第二十一章吧。
在博客上发的其它章节的翻译请參见:
http://blog.csdn.net/column/details/gradle-translation.html
翻译项目请关注Github上的地址:
https://github.com/msdx/gradledoc/tree/1.12。
直接浏览双语版的文档请訪问:
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。
另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,兼容2.1以上(5.0没试过)的Android系统。地址例如以下:
http://www.wandoujia.com/apps/com.githang.gradledoc
翻译不易。转载请注明本文在CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/41977599
关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如有发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步改动。
第二十一章. Gradle 插件
Gradle 在它的核心中有意地提供了一些小但实用的功能。用于在真实世界中的自己主动化。全部实用的功能,比如以可以编译 Java 代码为例,都是通过插件进行加入的。
插件加入了新任务
(比如JavaCompile
),域对象
(比如SourceSet
),约定(比如基本的
Java 源码是位于src/main/java
),以及扩展的核心对象和其它插件的对象。
在这一章中,我们将讨论怎样使用插件以及术语和插件相关的概念。
插件都觉得是被应用,通过Project.apply()
方法来完毕。
插件都有表示它们自己的一个短名称。
. 在上述样例中。我们使用短名称java
去应用JavaPlugin
。
我们还能够使用以下的语法:
因为 Gradle 的默认导入 (见附录 E,现有的 IDE 支持和怎样应对不支持的情况)。您还能够这样写:
插件的应用是幂等的。也就是说,一个插件能够被应用多次。假设曾经已应用了该插件。不论什么进一步的应用都不会再有不论什么效果。
一个插件是不论什么实现了 Plugin
接口的简单的类。Gradle
提供了核心插件作为其发行包的一部分。所以简单地应用如上插件是你所须要做的。然而。对于第三方插件。你须要进行配置以使插件在构建类路径中可用。
有关怎样进行此操作的具体信息,请參阅 59.5章节,“构建脚本的外部依赖”。
关于编写自己的插件的具体信息。请參阅 58章节,编写自己定义插件。
把插件应用到项目中能够让插件来扩展项目的功能。它能够做的事情如:
- 将任务加入到项目 (如编译、 測试)
- 使用实用的默认设置对已加入的任务进行预配置。
- 向项目中加入依赖配置 (见第 8.3 节,“依赖配置”)。
- 通过扩展对现有类型加入新的属性和方法。
让我们来看看:
演示样例 21.4. 通过插件加入任务
build.gradle
apply plugin: 'java'
task show << {
println relativePath(compileJava.destinationDir)
println relativePath(processResources.destinationDir)
}
gradle
-q show
的输出结果
> gradle -q show build/classes/main build/resources/main
Java 插件已经向项目加入了 compileJava
任务和processResources
任务。而且配置了这两个任务的destinationDir
属性。
插件能够通过智能的方法对项目进行预配置以支持约定优于配置。Gradle 对此提供了机制和完好的支持。而它是强大-然而-简洁的构建脚本中的一个关键因素。
在上面的演示样例中我们看到。Java 插件加入了一个任务,名字为compileJava
,有一个名为destinationDir
的属性(即配置编译的
Java 代码存放的地方)。
Java 插件默认此属性指向项目文件夹中的build/classes/main
。这是通过一个合理的默认的约定优于配置的样例。
我们能够简单地通过给它一个新的值来更改此属性。
演示样例 21.5. 更改插件的默认设置
build.gradle
apply plugin: 'java' compileJava.destinationDir = file("$buildDir/output/classes") task show << { println relativePath(compileJava.destinationDir) }
gradle
-q show
的输出结果
> gradle -q show build/output/classes
然而, compileJava
任务非常可能不是唯
一须要知道类文件在哪里的任务。
Java 插件加入了 source
sets 的概念 (见SourceSet
)
来描写叙述的源文件集的各个方面,当中一个方面是在编译的时候这些类文件应该被写到哪个地方。
Java 插件将compileJava
任务的destinationDir
属性映射到源文件集的这一个方面。
我们能够通过这个源代码集改动写入类文件的位置。
演示样例 21.6. 插件中的约定对象
build.gradle
apply plugin: 'java' sourceSets.main.output.classesDir = file("$buildDir/output/classes") task show << { println relativePath(compileJava.destinationDir) }
gradle
-q show
的输出结果
> gradle -q show build/output/classes
在上面的演示样例中。我们应用 Java 插件,除其它外,还做了下列操作:
-
加入了一个新的域对象类型:
SourceSet
-
通过属性的默认(即常规)配置了
main
源代码集 - 配置支持使用这些属性来运行工作的任务
全部这一切都发生在apply
plugin: "java"
这一步过程中。
在上面样例中,我们在约定配置被运行之后,改动了类文件所需的位置。在上面的演示样例中能够注意到,compileJava.destinationDir
的值也被改动了。以反映出配置的改动。
考虑一下还有一种消费类文件的任务的情况。假设这个任务使用sourceSets.main.output.classesDir
的值来配置,那么改动了这个位置的值,不管它是什么时候被改动。将同一时候更新compileJava
任务和这一个消费者任务。
这样的配置对象的属性以在全部时间内(甚至当它更改的时候)反映还有一个对象的任务的值的能力被称为“映射约定”。它能够令 Gradle 通过约定优于配置及合理的默认值来实现简洁的配置方式。
并且,假设默认约定须要进行改动时,也不须要进行全然的又一次配置。
假设没有这一点。在上面的样例中,我们将不得不又一次配置须要使用类文件的每一个对象。
这一章旨在作为对插件和 Gradle 及他们扮演的角色的导言。关于插件的内部运作的具体信息。请參阅第 58 章。编写自己定义插件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?