Calendar - Gradle 构建系统
2025 年 3 月 14 日
随着 Gradle 9.0 的临近,我们正在分享关于配置缓存的最新进展——这项关键功能显著提升了大型项目的配置时间。在这个主要版本中,我们计划使配置缓存成为首选的执行模式,目标是在 Gradle 10.0 中默认启用它。
配置缓存是 Gradle 最受期待的功能之一;进展显著。正如 Gradle Fellow Tony Robalik 指出的
“我对 Gradle 在使配置缓存稳定并成为运行构建的首选机制方面所做的一切工作感到兴奋。在工作中,我们观察到全局启用配置缓存每年将挽回大约 4 年的工程时间。配置缓存也为隔离项目奠定了基础,这已经……”
❯ 阅读更多
Calendar - Gradle 构建系统
2024 年 11 月 18 日
介绍 一年前,我们宣布 了一个名为声明式 Gradle 的新实验性项目。那篇博文介绍了我们对 Gradle 声明式模型的愿景。它还介绍了我们以开发者为中心的软件定义概念。随后在 2024 年 7 月发布了第一个 Early Access Preview 版本,并附带了声明式 Gradle 初探 博文。第一个 EAP 引入了一个名为软件类型 的配置模型、一种新的声明式配置语言 (DCL),并展示了工具改进和更好的 IDE 支持的潜力。
现在更容易尝试声明式 Gradle 了。第一个 EAP 基于单独的声明式 Gradle 原型插件 。这些原型插件实现了软件类型……
❯ 阅读更多
Calendar - Gradle 构建系统
2024 年 7 月 24 日
介绍 在我们 2023 年 11 月的更新中,我们宣布 了一个名为声明式 Gradle 的新实验性项目。那篇文章介绍了我们关于开发者优先软件定义的想法,以及我们计划如何实现 Gradle 声明式构建语言的愿景。从那时起,我们一直在努力创建声明式 Gradle 的第一个早期访问预览 (EAP)。
这篇博文提供了关于项目进展的最新信息,并概述了您如何试用 、提供反馈并影响我们的下一步行动。
什么是声明式 Gradle? 我们对 Gradle 构建工具的愿景之一是交付一种优雅且可扩展的声明式构建语言……
❯ 阅读更多
Calendar - Gradle 构建系统
2024 年 6 月 18 日
在 Devoxx France 大会上,我们与 Gradle 公司技术主管 Louis Jacomet 进行了交流。Louis 领导 Gradle 构建工具支持团队并协调版本发布,因此您经常可以在 GitHub 问题和 Gradle 会议上看到他的身影。让我们深入了解 Louis 分享的关于即将发布的 Gradle 9 版本的信息!
在 Devoxx FR 忙碌的一天 Louis 在 Devoxx FR 的星期五日程安排得很满,安排了 4 个小时的演讲。他与来自 Apache Maven 社区的 Hervé Boutemy 共同进行了一个关于驾驭依赖管理迷宫的会议,这是一个 1 小时的演讲。他还与他的同事 Paul Merlin 就即将推出的功能进行了单独讨论……
❯ 阅读更多
Calendar - Gradle 构建系统
2024 年 4 月 18 日
Gradle 很高兴宣布与 GitHub 建立技术合作伙伴关系,重点关注多个领域,首先是供应链安全和开发者体验。通过这种合作关系,我们在组织之间建立直接联系,并计划在 GitHub 和 Gradle 之间就集成进行合作,以在 Gradle 用户中推广最佳安全实践。
作为此合作伙伴关系的一部分发布的第一个功能是 Gradle 的依赖项提交 GitHub Action,可以将其配置为自动将依赖项提交到 GitHub 的依赖关系图,帮助用户更好地了解他们的应用程序并接收 Dependabot 警报。
这种合作关系将改善共享 Gradle 和 GitHub 生态系统中许多用户的体验。GitHub 是世界领先的 AI 驱动的开发者平台,用于构建、扩展和交付安全软件……
❯ 阅读更多
Calendar - Gradle 构建系统
2023 年 11 月 10 日
注意: 声明式 Gradle 是一个正在积极开发中的实验性项目,在实施过程中会频繁更改。要了解有关当前状态的更多信息,请访问 GitHub 上的声明式 Gradle 仓库 。在这里,您可以访问当前的文档和原型。订阅 Gradle 构建工具新闻邮件 ,以接收有关该项目的月度更新 - 上次更新于 2024 年 5 月 11 日
我们对 Gradle 构建工具的愿景之一是交付一种优雅且可扩展的声明式构建语言,使开发者能够以清晰易懂的方式描述任何类型的软件。
Gradle 的构建语言在最基本的方面已经具有可扩展性,这带来了高度的灵活性。这是主要原因之一……
❯ 阅读更多
Calendar - Gradle 构建系统
2023 年 9 月 1 日
配置缓存 是一项通过缓存配置阶段的结果并在后续构建中重用它来显著提高构建性能的功能。使用配置缓存,当没有影响构建配置的因素(例如构建脚本)发生更改时,Gradle 构建工具可以完全跳过配置阶段。
在 Gradle 8.1 中,配置缓存变得稳定并建议采用。在这种情况下,稳定性意味着行为已最终确定,所有重大更改都遵循 Gradle 弃用流程 。一般来说,如果现在可以正常工作,它将继续以相同的方式工作——除非该行为存在错误并且可能导致不正确的构建。虽然某些功能尚未实现 ,但大多数用户已经可以从中受益……
❯ 阅读更多
Calendar - Gradle 构建系统
2023 年 6 月 30 日
使Kotlin DSL 成为新的 Gradle 构建的默认设置 的改进之一是使用惰性属性 分配值的更简单方法。
在这篇博文中,我们将解释什么是惰性属性赋值,以及如何在最新的 Gradle 版本中利用新的语法。
什么是惰性属性 API? 惰性属性 API 是 Gradle 的一项功能,它延迟属性值的计算,直到需要时才进行计算。这是为扩展和任务编写属性的推荐方法。
提供的一些好处包括
解决配置顺序问题(不再需要 Project.afterEvaluate()
) 自动跟踪依赖项(无需 Task.dependsOn()
) 提供标准化访问……❯ 阅读更多
Calendar - Gradle 构建系统
2022 年 11 月 15 日
随着项目规模和复杂性的增长以及其他方面的成熟,它们往往会积累大量的自动化测试。在多个粒度级别 测试您的软件对于快速发现问题和提高开发者生产力非常重要。
在 Gradle 7.3 (于 2021 年 11 月发布)中,Gradle 团队引入了一项名为声明式测试套件的新功能。使用此功能可以更轻松地管理单个 Gradle JVM 项目中的不同类型的测试,而无需担心低级别的“管道”细节。
为什么需要测试套件? 通常 - 无论您是否在实践严格的测试驱动开发 - 当您开发项目时,您都会不断地在您的生产类旁边添加新的单元测试。按照惯例,对于 Java 项目,……
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 10 月 30 日
构建 Java 项目和运行 Gradle 都需要安装 JDK。大多数 Gradle 用户都方便地使用运行 Gradle 的 Java 安装来构建和测试他们的应用程序。
虽然这在简单情况下是可以接受的,但这种方法存在许多问题。例如,如果构建要求所有机器都使用相同的 Java 版本,则每个开发者都需要知道该要求并手动安装该版本。
已经可以配置 Gradle 以使用与运行 Gradle 的 Java 版本不同的 Java 版本来构建项目。但是,这需要分别配置每个任务,例如编译、测试和 javadoc。
Gradle 6.7 引入了“Java 工具链支持”。简而言之,……
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 8 月 10 日
这是关于增量开发(软件开发过程中您进行频繁小更改的部分)的一系列博文中的第二篇。我们将讨论即将推出的 Gradle 构建工具功能,这些功能可以显著改善围绕此用例的反馈时间。在上一篇文章中,我们为 Gradle 6.5 引入了文件系统监视 。
在 Gradle 6.6 中,我们引入了一项实验性功能,称为配置缓存,它通过缓存配置阶段 的结果并在后续构建中重用它来显著提高构建性能。使用配置缓存,当没有影响构建配置的因素(例如构建脚本)发生更改时,Gradle 可以完全跳过配置阶段。
...
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 5 月 29 日
这是关于增量开发(软件开发过程中您进行频繁小更改的部分)的一系列博文中的第一篇。我们将讨论即将推出的 Gradle 构建工具功能,这些功能可以显著改善围绕此用例的反馈时间。
此博文在 Gradle 6.7 中该功能已投入生产使用后进行了更新。
在 Gradle 6.5 中,我们引入了一项实验性功能,称为文件系统监视 ,它可以显著加速增量构建 。启用后,它允许 Gradle 在构建之间将它从文件系统中学到的知识保存在内存中,而不是在每次构建时轮询文件系统。这显著减少了确定自上次构建以来更改的内容所需的磁盘 I/O 量……
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 3 月 12 日
在处理传递依赖项时,最大的挑战之一是控制它们的版本。流行的库将作为传递依赖项出现在您的依赖关系图中的多个位置。并且很可能每个路径上的版本信息都不同。
通过多篇博文 ,您已经了解到 Gradle 提供了一套丰富的功能,用于表达复杂的依赖项需求。在这篇文章中,我们将讨论在降级依赖项版本时语义为何重要。您将了解 Gradle 6 的严格版本 功能,该功能提供此语义信息,并有效地为您提供了一个强大而精确 的工具来处理这个复杂问题。
在这篇文章中,我们将使用 Google 的 Guava ……
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 1 月 22 日
10 多年前,Google 发布了一个新的 Java 集合库。这个库现在被称为 Google Guava ,在随后的几个月和几年中获得了广泛的关注,并且可能是当今生产代码中使用最多的 Java 库。
由于 Guava 的广泛采用,如今许多其他库都依赖于它。您很可能在任何相当大的 Java 项目的类路径上通过传递依赖项找到它,即使没有直接使用它。随着越来越多的代码依赖于这样一个广泛使用的库,冲突的可能性增加,从而增加了项目的依赖地狱 。
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 1 月 13 日
这篇文章介绍了一个 新的 Gradle 插件 和构建扫描改进,旨在缓解您的不稳定测试。
不稳定的测试通过阻止 CI 管道并导致不必要的故障调查来扰乱软件开发周期。不健康的团队通过重新运行构建(有时多次)来使更改通过。Martin Fowler 对非确定性测试 提出了值得一读的尖锐言论。
要从您的组织中消除这个寄生虫,您必须识别、优先排序并修复您的不稳定测试。
缓解不稳定的测试 有许多巧妙的启发式方法可以帮助识别不稳定的测试。您可以运行一些静态分析来证明理论上测试失败不可能导致给定的测试失败。您可以计算“翻转”的次数,从失败……
❯ 阅读更多
Calendar - Gradle 构建系统
2020 年 1 月 7 日
在之前的博文 中,我们演示了如何使用功能 来优雅地解决类路径上存在多个日志记录框架的问题。在这篇文章中,我们将再次在不同的上下文中使用这个概念:可选依赖项 。
在 Gradle,我们经常说没有可选依赖项:只有当您使用特定功能时才需要的依赖项。让我们解释一下原因。
可选依赖项 直到最近,Gradle 都没有提供任何发布可选依赖项 的方法,这让许多 Apache Maven™ 用户感到困惑。为了理解在什么上下文中使用了可选依赖项,让我们看看一个真实的world 项目。Apache PDFBox 库在其声明了以下可选依赖项❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 12 月 17 日
Gradle 6.0 附带了许多围绕依赖项管理的改进,我们在 一系列 博文 中介绍了这些改进。在这篇文章中,我们将通过功能 的概念来探讨检测类路径上不兼容的依赖项。
为了说明这个概念,我们将看看 Java 应用程序和库的日志记录状态。除了 Java 核心库提供 java.util.logging
(JUL) 外,开发者还可以使用许多日志记录库,例如
❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 11 月 25 日
这篇博文已更新,以反映 Jackson 已开始使用本文的建议发布版本 2.12.0 的 Gradle 模块元数据。
在关于 Gradle 6 的依赖项管理的上一篇文章 中,我们看到不断增长的构建可能会很快陷入依赖地狱。如果意外结果在依赖关系图的底部引入并向上通过传递依赖项传播,则尤其难以分析。不幸的是,如果构成依赖关系图底部的库的作者有办法在库的元数据中表达有关库版本控制的所有知识,则可以避免其中一些问题。
此类库的典型示例是……
❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 11 月 11 日
依赖地狱是许多团队面临的巨大问题。项目及其依赖关系图越大,维护就越困难。现有依赖项管理工具提供的解决方案不足以有效解决此问题。
Gradle 6 旨在提供可操作的工具,以帮助处理这些类型的问题,使依赖项管理更具可维护性和可靠性。
以来自真实 world 项目的这个匿名依赖关系图为例
此图中包含数百个 不同的库。有些是内部库,有些是 OSS 库。这些模块中的一部分每周都会发布多个版本。实际上,对于如此大小的图表,您无法……
❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 9 月 5 日
这篇文章介绍了一些我们一直在开发的新的原生插件,这些插件可以构建 Swift 库和应用程序。它们在 macOS 和 Linux 上与官方 Swift 编译器 一起工作。
这些插件利用了 Gradle 核心中内置的许多功能,例如丰富的依赖项管理引擎以及源依赖项 、构建缓存 、复合构建 、更细粒度的并行执行 、构建扫描 等等。请注意,不幸的是,这些插件不能开箱即用地用于构建 iOS 应用程序和库。
如果您想提供反馈,请与我们联系 。
构建应用程序
您可以在 Gradle 原生示例 GitHub 仓库中找到这篇文章中的所有示例。让我们看看如何构建一个简单应用程序 。
❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 6 月 4 日
由于新的 C++ 插件越来越受到早期采用者的关注,我们想向大家更新自我们之前的引入新的 C++ 插件 博文以来的进展。
过去几个月见证了几个新功能、新的和扩展的文档以及 IDE 支持的改进。
如果您想提供反馈,请与我们联系 。
新功能 自上一篇博文以来,我们引入了三个主要新功能:C++ 项目的入门模板、目标机器建模和源依赖项。
C++ 项目的入门模板 现在比以往任何时候都更容易启动新的 C++ 项目。
感谢 init
任务由 Build Init Plugin 添加 的 C++ 入门模板,您可以……
❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 5 月 2 日
如果您使用 Eclipse,您可能熟悉 Buildship,即 Eclipse 的 Gradle 插件。Buildship 3.1 版本允许您在项目同步时运行任务 和自动构建 ,这是 Github 上投票最多的两个问题。在这篇文章中,我们将总结为什么这对许多人来说是一项基本功能,以及您如何利用它。
扩展项目同步 Buildship 项目同步功能将 Gradle 项目导入工作区并配置它们以与 Java 工具链一起工作。当然,这只是冰山一角。还有许多其他工具和框架,Buildship 无法为所有工具和框架提供配置。自 3.0 以来,有一个❯ 阅读更多
Calendar - Gradle 构建系统
2019 年 3 月 7 日
Gradle 模块元数据在 Gradle 5.3 中达到 1.0 版本,在这里我们将解释为什么您应该像我们一样兴奋!
创建 Gradle 模块元数据是为了解决多年来困扰依赖项管理的许多问题,特别是但不限于 Java 生态系统。这尤其重要,因为 POM 文件(或 Ivy 文件)根本不够丰富,无法描述当今软件的现实情况,您可能需要区分不同平台的二进制文件,或者在有多个可用实现时选择 API 的特定实现。
我们将在本文稍后描述更多示例。一些问题可能有解决方法,但这些解决方法是 hacky 的,甚至是容易出错的。例如,……
❯ 阅读更多
Calendar - Gradle 构建系统
2018 年 12 月 10 日
最近发布的 Gradle 5.0 包括 Gradle Kotlin DSL v1.0 ,现在已准备好广泛使用。
我们希望您在 Intellij IDEA 和 Android Studio 中享受 Kotlin 静态类型系统提供的构建编写体验:自动完成、智能内容辅助、快速访问文档、导航到源代码和上下文相关的重构。
如果您错过了,您可以观看 Paul Merlin 在 KotlinConf 2018 的 使用 Gradle Kotlin DSL 的类型安全构建逻辑 视频中演示这些好处。
如果您更喜欢 Groovy 的灵活性和动态特性,那也没关系——Groovy DSL 不会被弃用。使用……
❯ 阅读更多
Calendar - Gradle 构建系统
2018 年 9 月 25 日
这篇文章介绍了一个名为“源依赖项”的新 Gradle 依赖项管理功能。
通常,当您声明对库的依赖项时,Gradle 会在二进制仓库(例如 JCenter 或 Maven Central)中查找库的二进制文件,并下载二进制文件以在构建中使用。
源依赖项允许您改为让 Gradle 从 Git 自动检出库的源代码,并在您的本地计算机上本地构建二进制文件,而不是下载它们。
我们很乐意获得您对此功能的反馈。请试用它,并告诉我们哪些对您有效以及您遇到的任何问题。您可以在 Gradle 论坛 上留下反馈,或在 Gradle native GitHub 仓库上提出问题。
...
❯ 阅读更多
Calendar - Gradle 构建系统
2018 年 8 月 26 日
Gradle Kotlin DSL 1.0 候选版本 通常可用,包含在 Gradle 4.10 中。Kotlin DSL 几乎已准备好广泛使用。
我们希望您享受 Kotlin 静态类型系统提供的构建编写体验:上下文相关的重构、智能内容辅助、可调试的构建脚本以及快速访问文档。如果您还没有看过,您可以观看 Rodrigo B. de Oliveira 在 此 KotlinConf 2017 视频 中演示这些好处。
Kotlin DSL 1.0 最终版将与 Gradle 5.0 一起发布,Gradle 5.0 是 Gradle 的下一个版本 。在 1.0 版本之后,Kotlin DSL 将不会引入任何更多重大更改,除非经过弃用周期。
请试用 Kotlin DSL 并提交反馈。执行此操作的指南……
❯ 阅读更多
Calendar - Gradle 构建系统
2018 年 7 月 9 日
这篇文章介绍了一个新的 API,用于在构建脚本和插件中声明和配置 Gradle 任务 。我们打算让这个新的 API 最终取代现有的 API,因为它允许 Gradle 避免配置不必要的构建逻辑。使用新的 API 将很快成为默认建议,但现有的 API 将在几个主要版本中经历我们通常的弃用过程。
我们要求早期采用者试用新的 Gradle 任务 API,以解决任何问题并收集反馈。我们创建了一个 新的用户手册章节 ,以快速介绍该功能,并解释一些将您的构建迁移到使用新 API 的指南。
我们欢迎您的任何反馈……
❯ 阅读更多
Calendar - Gradle 构建系统
2018 年 1 月 10 日
这篇文章介绍了一些我们一直在开发的新的 C++ 插件。这些插件可以构建 C++ 库和应用程序。它们在 macOS、Linux 和 Windows 上与 GCC、Clang 和 Visual C++/Visual Studio 一起工作。
这些插件最终将取代软件模型插件,并利用 Gradle 核心中内置的许多新功能,例如丰富的依赖项管理引擎、构建缓存 、复合构建 、更细粒度的并行执行 、构建扫描 等等。有关背景信息,请参阅我们关于 Gradle 软件模型的现状和未来 的文章。
我们欢迎您对这些插件的任何反馈。您可以在 Gradle 论坛 上留下反馈,或在 Gradle native GitHub 仓库上提出问题。
构建应用程序
您可以在 Gradle 原生示例 GitHub 仓库中找到这篇文章中的所有示例。让我们看看如何构建一个简单应用程序 。
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 8 月 24 日
我们收到了许多关于 Gradle 软件模型 的状态和方向的咨询,特别是来自构建原生库和应用程序的用户的咨询。
在这篇博文中,我们将解释软件模型的当前状态和未来,特别是它与使用 Gradle 进行原生开发的关系。计划在 2017 年剩余时间内进行许多令人兴奋的改进;请参阅下面的路线图 。
软件模型的情况
简而言之,软件模型是一种非常声明式的方式来描述如何构建一块软件以及它在过程中需要的其他组件作为依赖项。它还提供了一个新的、基于规则的引擎来配置 Gradle 构建。当我们开始实施软件模型时,我们为自己设定了以下目标
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 5 月 17 日
在今天的 Google I/O 大会上,Android Studio 团队发布了 Android Gradle 插件 3.0 的第一个预览版本,该版本基于 Gradle 4.0 M2 。它带来了主要的性能改进,特别是对于具有大量子项目的构建。在这篇博文中,我们将解释您可以从这个预览版本中期待什么,以及 Android Studio 和 Gradle 团队如何实现这些改进。在深入探讨之前,让我们回顾一下导致创建当前 Android 构建系统的目标。
移动开发的复杂性
开发移动应用程序本质上比构建类似规模的传统 Web 或服务器应用程序更复杂。一个应用程序需要支持各种各样的设备,这些设备具有不同的外围设备、不同的屏幕尺寸和相对较慢的硬件。流行的免费增值模式又增加了一层多样性,需要为应用程序的免费版本和付费版本提供不同的代码路径。为了为每种设备和目标受众提供快速、轻巧的应用程序,构建系统需要预先完成大量繁重的工作。
为了提高开发人员的生产力并减少运行时开销,Android 构建工具提供了多种语言和源代码生成器,例如 Java、RenderScript、AIDL 和 Native 代码。将应用程序与其库打包在一起涉及高度可定制的合并和精简步骤。Android Studio 团队面临的挑战是如何自动化所有这些过程,而又不向开发人员暴露底层复杂性。开发人员可以专注于编写他们的生产代码。
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 4 月 10 日
在 Gradle 3.5 中引入,以减少构建时间。
它有什么作用?
构建缓存重用本地 Gradle 任务的输出,并在机器之间共享任务输出。在许多情况下,这将加快平均构建时间。
构建缓存是 Gradle 增量构建功能的补充,后者优化了尚未构建的本地更改的构建性能。许多 Gradle 任务被设计为增量式 ,因此如果任务的输入和输出没有更改,Gradle 可以跳过该任务。即使任务的输入已更改,某些任务 也可以仅重建已更改的部分。当然,这些技术仅在已经存在先前本地构建的输出时才有效。过去,在新的检出版本上构建或执行“clean”构建需要从头开始构建所有内容,即使这些构建的结果已经在本地或另一台机器(例如持续集成服务器)上创建过。
现在,Gradle 使用任务的输入作为键来唯一标识任务的输出。启用构建缓存功能后,如果 Gradle 可以在构建缓存中找到该键,Gradle 将跳过任务执行,并直接将输出从缓存复制到构建目录中。这可能比再次执行任务快得多。
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 3 月 8 日
我们很高兴宣布 Gradle Enterprise 2017.1 的发布。此版本包含许多新功能和错误修复,进一步扩展了构建扫描为您和您的团队提供的构建洞察力。以下是此版本的一些亮点。如果您对演示或试用感兴趣,请联系我们 。
轻松查找两个构建之间依赖项的更改
构建之间依赖项的更改可能是常见的问题来源。例如,升级一个库的版本可能会无意中将不同版本的传递依赖项引入到您的项目中。反过来,这些较新的版本可能会因破坏与您的项目使用的其他库的兼容性而给您带来各种挫败感。
新的构建比较功能使您可以快速查找构建之间依赖项的更改,包括传递依赖项的差异。
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 2 月 25 日
我们非常自豪地宣布,新发布的 Gradle 3.4 显着改进了对构建 Java 应用程序的支持,适用于所有类型的用户。这篇文章详细解释了我们修复、改进和添加的内容。我们将特别关注
我们所做的改进可以显着缩短您的构建时间。以下是我们测量的结果
这些基准测试是公开的 ,您可以亲自试用它们,它们是代表我们的用户报告的真实世界问题的合成项目。特别是,在持续开发过程中重要的是增量式(进行小的更改绝不应导致长时间的构建)
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 1 月 11 日
我们很高兴地宣布 Buildship 2.0 版本(我们对 Eclipse 的官方 Gradle 支持)现已通过 Eclipse Marketplace 提供。此版本增加了对复合构建的支持 ,大大缩短了开发周转时间。UI 已根据 1.x 系列期间的大量社区反馈进行了重新设计 。项目同步现在更加准确 ,并且项目导入所需的步骤减少了一个 。我们添加了对 Gradle 离线模式的支持 (感谢 Rodrigue !),最后但并非最不重要的是,第三方集成商可以利用我们新的 InvocationCustomizer
扩展点 。继续阅读以了解有关这些新功能的详细信息。
复合构建支持
什么是复合构建?
复合构建 功能在 Gradle 中允许您将多个不同的 Gradle 构建视为一个大型多项目构建来处理。当您需要处理通常单独开发的多个项目时,这会大大缩短周转时间。
假设您编写了一个 Java 库 lib
,供您的许多应用程序使用。您发现了一个错误,该错误仅在 special-app
中显现出来。传统的开发工作流程是更改 lib
中的一些代码并将快照安装到本地存储库中。然后,您必须更改 special-app
的构建脚本以使用该新快照,并检查错误是否已实际修复。
❯ 阅读更多
Calendar - Gradle 构建系统
2017 年 1 月 4 日
构建扫描是轻松共享有关构建数据的绝佳方式,但是如果您的团队想要将自己的数据添加到这些构建扫描中怎么办?他们可以!除了在构建扫描中自动捕获的广泛信息之外,您还可以附加自己的自定义数据,以提供对构建更深入的洞察力。此自定义数据可以采用标签、链接和键值格式的任意自定义值的形式。
通过将自定义数据添加到您的构建扫描中,您可以轻松找到特定类型的构建,提供指向 GitHub 上适用源代码提交的快速链接,添加有用的 CI 构建信息等等。然后,当您与队友共享单个构建扫描链接时,他们可以快速轻松地访问有关您的构建的大量信息,从而使他们更容易诊断构建环境问题、修复测试失败等等。
如果您不熟悉构建扫描,您可以在我们关于该主题的介绍性博客文章 中了解它们。您还可以在构建扫描用户手册 中找到更多详细信息,探索一些示例构建扫描 或使用此示例构建扫描项目进行实验 。
现在让我们来看一些将自定义数据添加到构建扫描中的示例(有关其他示例 ,请参阅用户手册)。
❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 10 月 12 日
我们并非每天都能宣布一项彻底改变多种软件工程工作流程的功能,但今天就是这一天。复合构建 是 Gradle 3.1 中的一项新功能,它为项目组织带来了全新的维度。
复合构建是一种连接多个独立的 Gradle 构建并将它们一起构建 的方式。该声明的简洁性并未完全传达所有新的可能性,因此让我向您展示这将如何使您作为开发人员的生活更加轻松。
连接项目 许多组织将其代码库拆分为多个独立的项目,每个项目都有专门的存储库和发布周期。项目之间的集成使用二进制依赖项进行管理,例如发布到二进制文件的 JAR 文件...
❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 10 月 6 日
几个月前,在今年的 Gradle Summit 会议上,我们宣布了 Gradle 平台的一个新部分,称为Gradle 云服务 。在这篇文章中,我想向您介绍这些服务中的第一个服务——Gradle 构建扫描服务 ——以及它使之成为可能的构建扫描 。
什么是构建扫描?
构建扫描是您运行构建时捕获的数据的表示形式。构建扫描插件 负责捕获数据并将其发送到构建扫描服务。然后,该服务将数据转换为您可以自己使用并与他人共享的信息 。这是一个使用构建扫描来调查失败的快速示例
❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 6 月 23 日
Gradle 3.0 的第二个里程碑版本刚刚发布 ,此版本附带了对 Java 9 的初始支持!
这意味着 Gradle 现在可以在最新的 Java 9 EAP 构建版本上正确运行,而且您也可以使用早期版本的 JDK 9 构建和运行测试。但是,重要的是要理解,虽然您可以使用 JDK 9 编译和测试应用程序,但我们不 支持模块,也不支持任何 JDK 9 特定的编译选项(如 -release
或 -modulepath
)。但是,我们很乐意接受您自己的项目的任何反馈。
❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 5 月 18 日
许多读者都会熟悉 JetBrains 出色的 Kotlin 编程语言。它自 2010 年以来一直在开发中,于 2012 年首次公开发布,并在今年早些时候发布了 1.0 GA 版本。
多年来,我们一直在关注 Kotlin,并且对该语言提供的功能以及其可观的普及率(尤其是在 Android 社区中)印象越来越深刻。
去年年底,Hans 与 JetBrains 团队的几位成员坐下来,他们一起思考:采用基于 Kotlin 的方法来编写 Gradle 构建脚本和插件会是什么样子?它如何帮助团队(尤其是大型团队)更快地工作并编写结构更好、更易于维护的构建?
这些可能性令人心动。
❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 4 月 28 日
在 Gradle Inc.,我们非常重视构建性能。虽然我们将性能改进捆绑到每个 Gradle 版本中,但我们从 Gradle 2.13 开始启动了一项名为性能爆发 的协同努力,以便让所有用户更快、更愉快地构建软件。在这篇博文中,我们将探讨我们如何处理性能问题,以及在 2.13 版本 及更高版本中期望看到的改进。
最快的事情是什么都不做 构建软件需要时间,这就是为什么最大的性能改进是完全消除构建步骤。这就是为什么与 Maven 或 Ant 等传统构建工具不同,Gradle 专注于增量构建。当...时,您为什么要运行 clean
❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 3 月 29 日
最受期待的 Gradle 功能之一刚刚在 Gradle 2.12 中推出:支持声明 编译时依赖项 。对于熟悉 Maven 的 Java 开发人员来说,编译时依赖项的功能类似于 Maven 的 provided
范围,允许您声明仅在编译时使用的非传递依赖项。虽然 Gradle War Plugin 的用户可以使用类似的功能,但现在可以使用 Java Plugin 为所有 Java 项目声明编译时依赖项。
编译时依赖项解决了许多用例,包括
编译时需要但在运行时永远不需要的依赖项,例如仅源代码注释或注释处理器; 编译时需要但在仅在使用某些功能时才需要在运行时需要的依赖项,即可选依赖项; 其 API 的依赖项...❯ 阅读更多
Calendar - Gradle 构建系统
2016 年 1 月 26 日
自动化测试是实现软件开发实践(如重构、持续集成和交付)的必要先决条件。虽然为应用程序代码编写单元测试、集成测试和功能测试已成为行业规范,但公平地说,构建自动化领域的测试尚未成为主流。
但是,为什么我们不将相同的经过验证的测试实践应用于构建逻辑呢?最终,构建逻辑与应用程序代码一样重要。它帮助我们以自动化、可重现和可靠的方式向客户交付生产软件。可能有很多理由跳过测试;但是,突出的原因之一是用于制定构建逻辑的数据定义格式。在...
❯ 阅读更多
Calendar - Gradle 构建系统
2015 年 10 月 15 日
在 Gradle,我们认为保持开发人员的“心流状态”对于构建优秀的软件至关重要。并且因为我们相信心流至关重要,所以我们断言开发人员不应离开 IDE 进行构建,并且他们不应知道 IDE 正在执行哪些功能以及哪些功能已委派给构建系统。我们的愿景是所有构建逻辑都完全保留在构建系统中,因此所有计算项目配置、构建项目、运行测试和运行可执行文件的工作都从 IDE 委派给构建系统。因此,IDE 映射构建的项目,可视化构建模型,并显示进度...
❯ 阅读更多
Calendar - Gradle 构建系统
2015 年 7 月 24 日
优化构建-编辑-构建循环 过去,我们建议您启用 Gradle 守护程序 (以及并行执行 ,但有一些注意事项)以充分发挥 Gradle 的性能。我们还讨论过使用增量构建 来通过跳过不必要的工作来加快构建-编辑-构建反馈循环。现在还有另一种可用的优化——一种允许您摆脱困境并让 Gradle 为您启动构建的优化。
从 2.5 版本开始,Gradle 支持持续构建执行 ,当检测到其输入发生更改时,它将自动重新执行构建。有一些社区插件添加了对 Gradle “watch”模式 的支持,它们执行类似的操作。
对于 Maven,需要为每个插件实现相同的 watch 功能...
❯ 阅读更多
Calendar - Gradle 构建系统
2015 年 4 月 16 日
内置任务(如 JavaCompile )声明了一组输入(Java 源文件)和一组输出(类文件)。Gradle 使用此信息来确定任务是否是最新的并且是否需要执行任何工作。如果输入或输出都没有更改,Gradle 可以跳过该任务。总而言之,我们将此行为称为 Gradle 的增量构建支持 。
要利用增量构建支持,您需要向 Gradle 提供有关任务输入和输出的信息。可以配置任务使其仅具有输出。在执行任务之前,Gradle 会检查输出,如果输出未更改,则会跳过任务的执行。在实际构建中,一个任务...
❯ 阅读更多
Calendar - Gradle 构建系统
2014 年 8 月 9 日
Maven 配置文件 提供了在特定条件下自定义构建时元数据的能力,例如,如果设置了特定的系统属性。一个典型的用例是为不同的运行时环境(如 Linux 与 Windows)应用某些配置。例如,正在构建的项目可能需要在这些不同的平台上使用不同的依赖项。
在 Gradle 项目中实现构建时配置文件 如果您仔细考虑一下,Maven 配置文件在逻辑上只不过是有限的 if
语句。Gradle 不需要为此使用特殊的结构。这是为什么呢?Gradle 使用编程语言而不是 XML 来定义构建模型。这为您提供了编程语言中可用的全部表达范围,以定义某些部分的标准...
❯ 阅读更多