当前位置: 首页 > news >正文

Gradle 7.0 及以上版本集中管理项目依赖项的版本号、插件版本和库坐标

libs.versions.toml 是 Gradle 版本目录(Version Catalogs) 的一个配置文件,用于集中管理项目依赖项的版本号、插件版本和库坐标。它采用 TOML(Tom's Obvious, Minimal Language)格式,是 Gradle 7.0 及以上版本引入的功能。

主要作用

  1. 统一管理依赖版本:避免在多模块项目中重复定义版本号。

  2. 提高可维护性:修改依赖版本时只需修改一处。

  3. 代码提示支持:在 IDE(如 Android Studio)中提供自动补全。

文件结构示例

通常位于项目的 gradle 目录下,例如:

project-root/├── gradle/│   └── libs.versions.toml└── build.gradle.kts

文件内容示例:

[versions]
kotlin = "1.9.0"
compose = "1.5.0"[libraries]
# 定义库坐标
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" }[plugins]
android-application = { id = "com.android.application", version = "8.1.0" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

关键部分

  1. [versions]:定义版本号(如 kotlin = "1.9.0")。

  2. [libraries]:定义依赖库的 group:artifact 和关联的版本(通过 version.ref)。

  3. [plugins]:定义 Gradle 插件的 ID 和版本。

在 build.gradle 中使用

通过 libs 对象引用(需在 settings.gradle 中启用):

// settings.gradle.kts
enableFeaturePreview("VERSION_CATALOGS")
dependencyResolutionManagement {versionCatalogs {create("libs") {from(files("gradle/libs.versions.toml"))}}
}// build.gradle.kts
dependencies {implementation(libs.kotlin.stdlib)implementation(libs.compose.ui)
}plugins {alias(libs.plugins.android.application)alias(libs.plugins.kotlin.android)
}

优点

  • 减少冲突:统一版本避免依赖冲突。

  • 清晰分类:分离版本定义与具体依赖。

  • 团队协作友好:版本变更更透明。

注意事项

  • 需要 Gradle 7.0+ 和 Android Studio Arctic Fox 及以上版本。

  • TOML 文件需严格符合语法(如缩进、括号匹配)。

通过这种方式,你可以更高效地管理大型项目的依赖关系。

http://www.xdnf.cn/news/915697.html

相关文章:

  • 【Fiddler工具判断前后端Bug】
  • Modbus RTU/TCP 协议详解与Spring Boot集成指南
  • 开疆智能Ethernet/IP转Modbus网关连接西门子BW500积算仪配置案例
  • 【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
  • 【Java微服务组件】分布式协调P4-一文打通Redisson:从API实战到分布式锁核心源码剖析
  • WPF八大法则:告别模态窗口卡顿
  • 为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)
  • 探索C++标准模板库(STL):String接口的底层实现(下篇)
  • 项目-- Json-Rpc框架
  • 前端模块化
  • 飞牛云一键设置动态域名+ipv6内网直通访问内网的ssh服务-家庭云计算专家
  • 微前端 - Module Federation使用完整示例
  • 《经济学原理》第9版第6章供给、需求和政府政策
  • XSS(跨站脚本攻击)详解
  • linux 用户态时间性能优化工具perf/strace/gdb/varlind/gprof
  • jvm 垃圾收集算法 详解
  • UDP 与 TCP 调用接口的差异:面试高频问题解析与实战总结
  • html如何在一张图片上的某一个区域做到点击事件
  • 【Docker 01】Docker 简介
  • git小乌龟不显示图标状态解决方案
  • 分组背包问题Python和C++两个版本讲解
  • Git 使用完全指南:从入门到协作开发
  • 鸿蒙仓颉语言开发实战教程:商城应用个人中心页面
  • MCP 技术完全指南:微软开源项目助力 AI 开发标准化学习
  • 【K8S系列】Kubernetes 中 Pod(Java服务)启动缓慢的深度分析与解决方案
  • api将token设置为环境变量
  • 503 Service Unavailable:服务器暂时无法处理请求,可能是超载或维护中如何处理?
  • HAL库开发--SPI的配置方式和读写操作
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析LLP (二)