Gradle 8.5 发布,支持 Java 21

2023年 12月 1日 67.1k 0

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

Gradle 现在支持在 Java 21 上运行。此版本对 Kotlin DSL 进行了改进,包括更快的 first use 以及预编译 Kotlin 脚本插件中的版本目录支持。此外还提供了更多有用的错误和告警消息、改进了 build init 和依赖项验证,以及为构建和插件作者提供的几个新 API。

完整的 Java 21 支持

Gradle 8.4 支持使用 Java 工具链编译和测试 Java 21,但还不支持在 Java 21 上运行 Gradle 本身。新版本发布后,Gradle 现在完全支持在 Java 21 上编译、测试和运行。

详情可参阅完整的兼容性文档。

Kotlin DSL 改进

与传统的 Groovy DSL 相比,Gradle 的 Kotlin DSL 在支持的 IDE 中提供了更好的编辑体验:自动完成、智能内容辅助、快速访问文档、源代码导航和上下文感知重构。

  • 首次使用速度更快:首次使用 Gradle 版本时,Gradle 会比以前更快地开始编译构建逻辑。

  • 预编译脚本中的版本目录 API:versionCatalogs扩展访问器现在可用于 Kotlin DSL 预编译脚本。
// buildSrc/src/main/kotlin/my-convention-plugin.gradle.kts
versionCatalogs                   // This is the extension now available
    .named("libs")                // Assumes there is a libs catalog, throws exception otherwise
    .findLibrary("assertj-core")  // Search the catalog for an assertj-core entry
    .ifPresent { assertjCore ->   // If there is one ... 
        dependencies {            // ... Add a dependency to it 
            testImplementation(assertjCore) 
        }
    }
  • 能够为脚本编译启用 Kotlin 元数据版本检查

错误和告警报告改进

  • 改进了使用 reserved names 创建配置时的弃用消息。弃用警告示例:
 Configure project : The configuration customCompileOnly was created explicitly. This configuration name is reserved for creation by Gradle. This behavior has been deprecated. This behavior is scheduled to be removed in Gradle 9.0. Do not create a configuration with the name customCompileOnly. Consult the upgrading guide for further information: https://docs.gradle.org/8.5/userguide/upgrading_version_8.html#configurations_allowed_usage When creating configurations during sourceSet custom setup, Gradle found that configuration customCompileOnly already exists with permitted usage(s): Consumable - this configuration can be selected by another project as a dependency Resolvable - this configuration can be resolved by this project to a set of files Declarable - this configuration can have dependencies added to it Yet Gradle expected to create it with the usage(s): Declarable - this configuration can have dependencies added to it Gradle will mutate the usage of configuration customCompileOnly to match the expected usage. This may cause unexpected behavior. Creating configurations with reserved names has been deprecated. This will fail with an error in Gradle 9.0. Create source set custom prior to creating or accessing the configurations associated with it. For more information, please refer to https://docs.gradle.org/8.5/userguide/building_java_projects.html#sec:implicit_sourceset_configurations in the Gradle documentation. 
  • 改进了运行测试时对封装断言错误的处理
  • 无法删除文件时提供更好的诊断:当 Gradle 无法删除文件时,它现在将提供扩展诊断。这有助于解决锁定文件、并发写入等问题。

更多详情可查看发布公告。

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论