-
基本介绍
Gradle是一款开源的构建工具,它可以帮助Java/C++/Python等多种语言编写的项目的构建,官网宣称Build Anything。您可以使用Gradle丰富的API和成熟的插件以及集成生态系统来实现构建自动化,通过统一建模、快速集成和系统化从头到尾全流程实现对软件的快速交付。
Gradle的目标:提高开发人员的工作效率。从移动应用程序到微服务,从小型初创公司到大型企业,Gradle都能帮助团队构建项目、提升自动化能力并更快地交付更好的软件。
官网:https://gradle.org/
-
Gradle优势
性能优势
1、支持增量构建
Gradle在构建运行之间检查任务的输入、输出或实现是否在上一次构建调用之后发生了变化,如果没有发生变化,则认为任务已执行不会再执行。Gradle还将任务的配置作为其输入的一部分。
2、任务输出缓存
如果任务已经在另一台计算机上执行,Gradle可以跳过本地执行,而是从构建缓存中加载任务的输出。典型的用例是让CI构建推入共享构建缓存,并允许开发人员从中提取。本地构建缓存也可用于重用在同一机器上先前生成的任务输出。包括Android、Kotlin、c++和Scala在内的一些插件也支持任务级缓存。
3、支持增量执行子任务
当Gradle发现某个任务的输入或输出在构建运行之间发生了变化时,就会再次执行该任务。该任务可以使用增量API来了解到底哪些文件发生了更改。有了这些信息,任务可能不需要重新构建所有内容。
4、支持增量注解处理
在支持注解处理程序的情况下,增量注解处理显著提高了增量编译的效率。
5、编译器守护程序
当您需要并行多进程进行编译时,Gradle可以创建一个多个构建项目共享的守护进程,这样可以提高编译进度。
6、并发执行
Gradle允许通过执行器API并行执行任务和任务内的工作。并行是非常细粒度的,可以提升更快的性能。
7、并行下载依赖项
Gradle将同时下载依赖项元数据(通常是“pom.xml”定义的)和工件。这是按需完成的,只有在工件确实需要时才这样做。
8、支持设置任务超时
每个任务都有一个超时属性,可用来限制其执行时间。当任务达到超时时间时,其任务执行线程将被中断并允许构建完成。
构建过程监控
1、基于web的可视化构建
通过丰富的web界面而不是文本控制台和文本文件了解构建中发生了什么。构建扫描(Build Scans)提供了更多、更有效的信息。
2、支持协同调试
与同事共享构建扫描,可以有效地解决问题并共同改进。共享可细致到构建的特定切面(如日志输出行)的整
个扫描或锚点。
3、支持扩展和自定义
添加您自己的数据来构建标记、值和锚点的扫描,通过这些扩展和自定义数据可以将构建扫描集成到您的工具链中。
4、支持细粒度的构建比较(Gradle企业版)
构建扫描可以快速高亮标记不同构建之间的差异,例如依赖项版本的差异,以便快速分析根本原因。
5、可跟踪并导出所有的构建历史记录(Gradle企业版)
包括本地构建而不仅仅是CI构建的所有构建,Gradle都可以打点进行跟踪,通过跟踪可以帮助您及时了解项目的趋势,并且也可以根据您的选择导出构建扫描数据。
灵活的可配置执行选项
1、连续构建
当一个Gradle任务运行在连续构建的模式下时,Gradle 会自动监听这个任务所有的输出变化,无论输出怎么变化,这个任务都能够自动执行。您还可以运行多个连续任务去并行构建多个项目。
2、混合构建
混合构建允许您包含另外的您能够包含的独立项目,比如开发一个应用时依赖一个同时被其他项目也依赖的lib包,默认情况下,它们是并行构建的,并且可以嵌套。
3、排除指定任务
当您可以从一开始运行时排除任何任务,当您排除这个任务时,如果没有其他依赖项,则此任务依赖的所有任务也将自动排除。
4、可进行运行预演
运行预演可以让您查看哪些任务在不执行任务操作的情况下实际得到了执行。
5、失败后继续执行
Gradle不会在第一次失败后就马上停止执行,执行要执行的每个任务,其中该任务的所有依赖项都在没有失败的情况下完成。允许在单个构建执行中发现尽可能多的失败,并在执行最后提供非常好的聚合错误报告。
6、快速失败测试
虽然在测试失败后继续是Gradle的默认设置,您也可以设置“--fail-fast”标志或配置“failFast=true”,让Gradle构建失败时,甚至其中一个测试失败后立即完成。
7、使用存储同步依赖缓存
Gradle有一个‘--refresh-dependencies’的选项,设置它可以忽略所有已解析的模块和工件的缓存条目。将对所有配置的存储库执行新的解析,重新计算动态版本、刷新模块和下载工件。然而,在可能的情况下,Gradle会在再次下载之前检查之前下载的工件是否有效。这是通过比较存储库中已发布的SHA1值和已下载工件的SHA1值来实现的。