写点什么

Gradle 引入构建审视(Build Scans)功能

  • 2017-01-03
  • 本文字数:3377 字

    阅读完需:约 11 分钟

在今年早些时候举办的 Gradle 峰会上,Gradle 团队在发布 Gradle 构建工具 3.0 版本的同时,引入了 _Gradle 云服务(Gradle Cloud Services)_。该服务“通过为 Gradle 构建工具增加新功能,并从新的角度分析你或你团队项目构建的过程,来提升自动化构建的效率和生产力”。其中第一个提供的云服务是 _ 构建审视(build scans)_ 功能。

在 Gradle构建审视功能用户手册中是这样定义的:

构建审视是用于开发和维护 Gradle 构建的重要工具。它为你提供了构建的详细信息,并为你识别构建环境、依赖或性能上存在的问题,同时可以帮你更全面地理解并提升构建过程,也便于与他人的合作。

在 Gradle 构建运行时,构建审视插件会抓取数据,并将数据传送到构建审视服务端。同时返回一个可被共享的链接,内部包含 _ 有用的构建信息 _。这些信息包含两大类:

  • 环境信息,包括操作系统、Java 版本和时区
  • 构建相关信息,包含使用的插件、任务、测试以及依赖信息

但它不会记录项目的源码和其 artifacts,比如 JAR 包。

要为一个现存的 Gradle 项目增加构建审视功能,需要在 build.gradle 文件中增加如下配置:

复制代码
plugins {
id 'com.gradle.build-scan' version '1.3'
id 'java'
}
复制代码
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
tag 'SAMPLE'
link 'GitHub','https://github.com/gradle/gradle-build-scan-quickstart'
}

构建项目时,在命令行中增加 -Dscan 开关,就会触发构建审视:

$ gradle build -Dscan在一系列简单的激活操作后,项目的构建信息就可以在线被查看了,还可以通过永久链接分享给其他开发者。这使开发者之间可以互相协作,并更快地解决问题或评估构建的性能。

如果一个项目在单元测试阶段失败或源码存在错误,构建审视的结果会像如下例子所示:

相反,如果项目通过了全部单元测试,且构建成功,则构建审视的结果会像下面的例子所示:

在以上任意情况下,都可以交互式地查看详细信息。其中还列出了各部分的构建耗时,用户可以使用这些信息来监控其性能。

在GitHub 上可以找到完整的示例项目

诸多知名开源项目,如 Hibernate JUnit 5 Ratpack ,在开发各自项目时都使用上了Gradle 的构建审视功能。

InfoQ 就 Gradle、Gradle 云服务和构建审视功能,专访 Gradle 市场主管 Chris Beams

InfoQ:能介绍一下您目前在 Gradle 的职位么?

Beams:我在 Gradle 公司管理市场方面的工作。在此之前,我是一名 Gradle 构建工具团队的首席工程师。

InfoQ:从现状看来 Gradle 正与 Maven Ant Pants等其他构建工具拉开差距,比如引入 Gradle 守护进程(Gradle daemon)、新的 Gradle 云服务和构建审视等。您期望其他的工具也实现这些特性么?

Beams:不太可能。就 Gradle 守护进程而言,它是我们提炼了多年工作经验的产物。并不是其他工具简单说一句“我也可以支持该功能”就能轻松实现的,至少无法达到适用于生产环境的水平。但是 Bazel 工具就另当别论了,它和 Gradle 守护进程一样采用了客户端、服务端模式。

而 Gradle 云服务,包括其中的构建审视功能,就远远超越了传统的构建工具特性。它是我们大规模自动化构建 _ 平台 _ 的一部分。这个构建平台是一个耗资巨大的项目,这也意味着,如果背后没有一家像我们这样致力于自动化构建,并在这方面作出巨大投资的公司来支持,不太可能实现这个特性。

InfoQ:您认为是什么因素使得 Gradle 超越其他构建工具?

Beams:有诸多因素造就了 Gradle 今天的与众不同。当然,其中一大因素就是它所拥有的一系列特性。从 Gradle 的原创特性,如增量构建(incremental builds),到全新的杀手级特性,如混合构建(composite builds),我们认为这些特性是 Gradle 成功从与诸多其他构建工具的竞争中脱颖而出的一大因素。你可以在 https://gradle.org/maven_vs_gradle 上找到详尽的 Gradle 特性列表,以及各特性与 Maven 的对比。

另一个因素是 Gradle 构建工具日趋完善的通用性。Gradle 是使用 Java 语言实现的,并扎根于基于 Java 虚拟机的项目上,但是如今 Gradle 支持构建不同语言和生态系统的项目,其中包括 C、C++ 及 Android。还有 LinkedIn 最近贡献的 PyGradle 插件,为 Gradle 增加了对 Python 项目的支持。Gradle 正成为第一个真正的通用构建工具,这对我们来说非常重要,因为这意味着各种形式和规模的语言社区,甚至是目前尚不存在的,都可以把 Gradle 作为高级自动化构建的基础,而不用重新创建自己的构建工具,从而能更快地发展语言本身。

Gradle 在使用率上也胜过其他工具。我们见证了 Gradle 一直以来稳定的下载增幅,目前我们平均每月有 250 万的下载量。GitHub 上还有数千使用 Gradle 构建的项目,同时,根据最近上线的 GitHub Archive 的数据,我们得知,大家在新建基于 Java 虚拟机的项目时,更倾向于使用 Gradle。Gradle 的插件生态系统也正蓬勃发展,现在在 Gradle 的插件门户页面上已经提供了上千个插件,这也意味着用户几乎所有的集成或构建需求都可以找到对应的插件。

我们不仅自豪于 Gradle 的下载量、项目数和用户量,我们更欣喜地看到,全世界许多非常受推崇的科技公司也在选择使用 Gradle,而且是以非常公开的形式。细想 Netflix 备受瞩目的 Gradle 插件集合 Nebula ,LinkedIn 频繁的 Gradle 会谈以及 Google 采用 Gradle 构建 Android 项目,它们选择使用 Gradle 的原因正是其另一个独特特性:极度灵活性。Gradle 可以满足它们极具挑战的自动化构建需求,因为 Gradle 认为,从根本上来说,项目的构建与你所构建的软件产品或服务的其他部分一样,都是代码,它们之间没有任何差别。事实上,Gradle 也正是一个自动化软件生产的类库及框架。

最后还有一点,Gradle 背后有一家专注于自动化构建且资金充裕的公司支持着。这也意味着我们可以聘请 30 多名工程师每日专注于改善 Gradle,使其变得最好。而大部分其他工具并没有这个优势,这自然也就限制了它们的发展。

InfoQ:已经有 Hibernate JUnit 5等项目在使用 Gradle 的构建审视,您期望其他知名开源项目也在开发中使用构建审视这个功能么?

Beams:这值得拭目以待!我们很高兴地看到整个社区,包括各开源项目维护者和用户,对构建审视功能的反应。构建审视的好处是每个人可以在任何时刻创建它,并分享给任何人。我们认为公开的构建审视为用户在需要解释 Gradle 构建的具体过程时提供了便利,比如在 Stack Overflow 或 GitHub 上描述问题时,以及在与同事之间的交流中。欢迎大家都来尝试一下构建审视,构建审视功能用户手册是用于起步的绝佳教程。

同时我们也很高兴地看到大家对 Gradle Enterprise 的兴趣,这是一个 Gradle 云服务的私有版。它提供了公共构建审视服务的所有功能,同时包含了一些额外的管理特性,这些特性会为团队,尤其是大型团队,带来巨大帮助。读者可以从 https://gradle.com/enterprise 上获得更多信息。

InfoQ:您能简单介绍下 Gradle 接下来的目标么?

Beams:2016 年是我们高产的一年,我们实现了 Gradle 云服务,支持了混合构建,并在提升各种规模项目的构建性能方面做了巨大改进。

但是我们更期待 2017 将要发生的变化。一个值得关注的工作是,我们正在创建独立的以任务为中心的帮助文档,为新老用户找出最佳方法来解决 Gradle 自动化构建中遇到的问题。

我们也将继续在诸多前沿领域尽可能地优化构建性能。17 年年初,我们会发布 Gradle 第一版任务输出缓存,它支持交叉构建,并提供跨机器缓存,缓存中会保存中间构建文件并可被重用于其他机器上的其他构建。我们已经在和全球一些大型科技公司的交流中了解到这个先进的缓存技术所将产生的巨大改变,我们迫不及待地期望大家能用上这个功能!

我们也将自动化分离 Gradle 所管理的依赖类库中的 API 及其实现。这样分离可以避免类库使用者在类库产生的 API(更准确地说是 ABI(应用程序二进制接口))没有发生变化时,不必要的编译,从而进一步提升构建性能。

在 2017 年初,我们还会发行 1.0 版 Gradle Kotlin 脚本,它将提供一种类型安全且对集成开发环境(IDE)极度友好的方式来编写 Gradle 构建脚本。

我们还有更多的计划,但是这里先不透露。谢谢今天的访谈!

Chris Beams 是 Gradle 公司的市场主管,也是一位资深的开源工具开发者。在就职于 Gradle 之前,他是一名 Spring Framework 开发组成员。

查看英文原文: Introducing Gradle Build Scans

2017-01-03 18:008065
用户头像

发布了 41 篇内容, 共 13.8 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

万界星空科技MES系统中的生产防错功能

万界星空科技

MES系统 mes 万界星空科技 生产管理 数字化车间

把Mybatis Generator生成的代码加上想要的注释

京东科技开发者

macOS Catalina for mac (macos 10.15系统)v10.15.7正式版

南屿

mac系统 苹果系统下载 macos 10.15系统

FastAPI 并发请求:打造更快的Web应用

Liam

程序员 性能优化 并发编程 后端 FastApi

[杂谈]字符串操作-两个数组之间的重排序

alexgaoyh

重排序 数组 字符串 数组之间

Hex-Rays IDA Pro(交互式反汇编工具) v7.7汉化版

南屿

IDA Pro 静态反编译工具

基于 Flink 的实时数仓在曹操出行运营中的应用

Apache Flink

《高效能笔记法》读后感

凌晞

结构化思维 冰山模型

论学习方式和知识结构

凌晞

学习方法

第一个程序:HelloWorld——IDEA 使用

小魏写代码

音乐编辑软件Studio One 6 Pro新功能介绍 含Studio One 6破解注册机

南屿

音乐制作 Studio One 许可证 Studio One 破解 Studio One 6下载

电影特效合成软件:NUKE 14.1v1 for Mac安装教程

南屿

NUKE 14 电影特效合成软件 NUKE下载

Ngnix常用配置及和基本功能讲解

京东科技开发者

探究低代码平台

互联网工科生

低代码 JNPF

cad2022破解版安装教程 附autocad2022注册机【Mac/win】

南屿

AutoCAD 激活版 CAD绘图软件 cad 2022安装教程 AutoCAD2022序列号

代码注释是程序员必备的技能吗?

小魏写代码

illustrator 2024中文破解版 含AI2024激活补丁【Mac/win】

南屿

AI2024破解版 矢量图形设计工具 Illustrator 2024下载 Illustrator 2024中文版

软件测试/测试管理训练营马上开营! 快来免费领取试听课吧~

测吧(北京)科技有限公司

测试

制造业各种管理系统介绍及集成

万界星空科技

MES系统 ERP mes 万界星空科技 万界星空科技mes

以DataOps一体化之道,助力研发治理提质增效

鲸品堂

Data 运营商 一体化

全国高校计算机类课程能力提升高级研修班(2024年第一期)来了!

华为云PaaS服务小智

云计算 软件开发 华为云

源2.0大模型适配LLaMA-Factory框架 微调训练快捷高效

财见

CleanShot X为什么不能识别文字?CleanShot X文字识别教程

南屿

OCR识别 CleanShot X Mac截图软件

实战讲解|Trino 在袋鼠云数栈的探索与实践

袋鼠云数栈

大数据 前端 计算引擎 trino

交互式产品原型设计工具 Axure RP 9汉化授权版 【Mac/win】

南屿

Axure RP 9汉化 Axure RP 9授权码 Axure RP 9破解版 原型设计工具

MacOS远程管理软件哪款好?Royal TSX for Mac v6.0.2激活版

南屿

Royal TSX 教程 MacOS远程管理 Royal TSX mac破解版

关于MySQL日期函数你不知道的用法

不在线第一只蜗牛

MySQL 数据库 前端 日期工具

软件测试 | 拒绝上市公司的 Offer,选择自己喜爱的行业,这么从容不迫他凭什么?

测吧(北京)科技有限公司

测试

Gradle引入构建审视(Build Scans)功能_Java_Michael Redlich_InfoQ精选文章