Gradle 8.6 发布


Gradle 8.6 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。

此版本支持配置缓存的自定义加密密钥,对 build init 进行了多项改进,并更新了 build authoring API。还为 IDE integrators 提供了更多有用的错误和警告信息以及新的 API。

配置缓存改进

配置缓存通过缓存配置阶段的结果并将其重用于后续构建来缩短构建时间。此功能可以显着提高构建性能。

自定义加密密钥

配置缓存经过加密,可降低敏感数据意外泄露的风险。默认情况下,Gradle 会自动创建并管理密钥,并将其存储在 Gradle 用户主目录的密钥库中。这样做虽然方便,但在某些环境下可能并不合适。

现在用户可以向 Gradle 提供用于通过GRADLE_ENCRYPTION_KEY环境变量加密缓存配置数据的密钥。更多详细信息查看 Gradle 用户手册的配置缓存部分。

Build init 改进

build init 插件允许用户轻松创建新的 Gradle 构建,支持各种类型的项目。

Simpler source package handling

你不再需要回答有关源包的交互式问题。取而代之的是使用org.example的默认值。你可以使用init任务的现有选项--packageflag 来覆盖它。此外,还可以通过在 Gradle 用户主页的gradle.properties中添加org.gradle.buildinit.source.package新属性来设置默认值。

// ~/.gradle/gradle.properties org.gradle.buildinit.source.package=my.corp.domain 

生成的 convention plugins 的名称现在以buildlogic开头,而不是软件包名称,从而使名称更简短、更整洁。

Generating without interactive questions

新增的 --use-defaults 选项可为未明确配置的选项应用默认值。它还能确保 init 命令在没有交互式用户输入的情况下完成。这在 shell 脚本中非常方便,可确保脚本不会意外挂起。

例如,你可以在不回答任何问题的情况下生成 Kotlin 库:

gradle init --use-defaults --type kotlin-library

Simpler assignment syntax in Kotlin DSL

示例:

application {
	mainClass = "org.example.AppKt"
}

Build authoring 改进

Gradle 为插件作者和构建工程师提供了丰富的 API 来开发自定义构建逻辑。如果执行构建不需要任务,则任务配置避免 API 会避免配置任务。

Lazy name-based filtering of tasks

示例:

tasks.named { it.contains("pack") }.configureEach {
// lazily configure details of all '*pack*' tasks that are part of the task graph
}

Allow Providers to be used with dependency capabilities

Gradle 支持声明组件的功能,以便允许 Gradle 在构建时检测和解决依赖项之间的冲突,从而更好地管理依赖项。

dependencies { implementation("org.foo:bar:1.0") { capabilities { // Values in the interpolated String below are lazily evaluated, allowing them to be set after this block requireCapability(project.provider(() -> "${project.group}:${project.name}-platform:${project.version}")) } } } // Later, the version of the project is set. // Without the provider above, this change would not be reflected in the capability. project.version = "1.0.0" 

错误和警告报告改进

Gradle 提供了一组丰富的错误和警告消息来帮助用户理解和解决构建中的问题。

出现依赖锁定错误时更清晰的建议操作

此版本通过将错误与可能的操作分开以修复控制台输出中的问题,改进了依赖锁定中的错误消息。启用 strict mode 时,由于锁定文件格式无效或缺少锁定状态而导致的错误现在显示如下:

FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':dependencies'. > Could not resolve all dependencies for configuration ':lockedConf'. > Invalid lock state for lock file specified in '<project>/lock.file'. Line: '<<<<<<< HEAD' * Try: > Verify the lockfile content. For more information on lock file format, please refer to https://docs.gradle.org/8.6/userguide/dependency_locking.html#lock_state_location_and_format in the Gradle documentation. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. 

更好地报告 providers 中的循环引用的错误

FAILURE: Build failed with an exception. * Where: Build file '<project>/build.gradle' line: 7 * What went wrong: A problem occurred evaluating root project 'test'. > Circular evaluation detected: property(java.lang.String, map(java.lang.String map(<CIRCULAR REFERENCE>) check-type())) -> map(java.lang.String map(property(java.lang.String, <CIRCULAR REFERENCE>)) check-type()) -> map(property(java.lang.String, map(java.lang.String <CIRCULAR REFERENCE> check-type()))) -> property(java.lang.String, map(java.lang.String map(<CIRCULAR REFERENCE>) check-type())) 

IDE 集成改进

Gradle 使用 Tooling API 集成到许多 IDE 中。


此外,Gradle 8.6 中还修复了 86 个 issue。更多详情可查看官方公告。


相關推薦

2023-04-15

Wine 8.6 已发布,可用于在 Linux 和其他平台下运行 Windows 游戏和应用程序。 Wine 8.6 最重要的是有一个来自 musl libc 项目的捆绑数学库。 Alexandre Julliard 率先进行了更改,以在 MSVCRT 和 NTDLL 组件之间使用 musl 的数学库,并帮助开发

2022-05-18

Rocky Linux 8.6 发布了!Rocky Linux 是一个社区驱动的企业级操作系统, 100% 兼容 RHEL。目前 Rocky Linux 8.6 已发布,此版本适用于 x86_64 和 aarch64 架构。 Rocky Linux 8.6 带来以下改动: 支持较新版本的语言运行时 PHP 8.0 提供了 Bug 修复

2022-05-08

AlmaLinux 8.6 Beta 已发布,代号"Sky Tiger"。 AlmaLinux 是开放源码的、社区驱动的项目,它从红帽企业版 Linux (RHEL) 的源码编译而来。AlmaLinux 跟 RHEL 8 完全在二进制上兼容,它由 CloudLinux OS 的创建者打造。AlmaLinux 团队承诺永久免费提供

2022-08-13

周边组件提供丰富的微服务治理方案。 SofaRPC v5.8.6 现已发布,此版本带来对 sofa-rpc 框架的增强和一些错误修复(需要 JDK8 版本支持)。如果你的版本介于 5.7.10 和 5.8.5 之间,官方鼓励进行升级。 具体更新内容如下: Enhancement

2022-05-21

面向 64 位 Intel、64 位 AMD (x86_64) 和 64 位 Arm (aarch64) 平台发布。 该版本引入了对 OpenSSH 服务器的插入式配置文件支持、用于自动解锁 LUKS 加密驱动器的基于策略的解密 (PBD) ,并提供了许多增强功能,包括: 软件管理 模块同

2022-09-22

9月15日,开源操作系统社区OpenCloudOS宣布发布第二个社区稳定版 OpenCloudOS 8.6。 OpenCloudOS 8.6 版本采用了更加灵活的图形安装方式,支持业务场景的自定义分区、文件系统选择,支持多种国际语言的选择,支持多种不同场景软

2023-07-25

介绍 Tailchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。 前端微内核架构 + 后端微服务架构 使得 Tailchat 能够驾驭任何定制化 / 私有化的场景 面向企业与私域用户打造,高度自

2023-02-14

Gradle 8.0 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目

2023-12-01

Gradle 8.5 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目

2022-11-27

Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。 Gradle 7.6 现已发布,此版本

2022-08-07

Gradle 7.5.1 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设

2022-12-13

业的需求,使他们能够快速、有效、轻松地开发产品。 Gradle 在 Gradle 中初步实现(实验性的)Dependency API 将 Grade Editor 相关功能重构为 gradle.editor 模块 Gradle 隐藏空的生成文件夹 支持没有 build.gradle 的项目 修复 gradle bui

2023-02-07

回错误的结果 Reflection KT-56093 用 Kotlin 1.8.0 构建的 Gradle 插件中的 Metaspace 漏洞 Tools. Compiler plugins. Serialization KT-56347 [Kotlin 1.8] 回归 kotlinx.serialization 编译器插件内部错误 KT-55681 序列化:更新到 1.8.0 后由 @Serializer(forClas

2023-04-07

浏览器的整合更容易,这要归功于 Wasm 垃圾收集 在 Gradle 中默认采用新的 JVM 增量编译 从 Kotlin 1.7.0 开始,增量编译的新方法已经可以使用了,如今则是默认可以使用。你不再需要在你的 gradle.properties 中指定 kotlin.incrementa