当前位置: 首页 > 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.lqws.cn/news/213931.html

相关文章:

  • 阿里巴巴ROLL:大规模强化学习优化的高效易用解决方案
  • Java-IO流之序列化与反序列化详解
  • 技巧小结:根据寄存器手册写常用外设的驱动程序
  • 室内电子地图制作核心技术解析:从三维建模到动态 POI 管理
  • C++常用的自动化测试库
  • HBuilderX安装(uni-app和小程序开发)
  • 1-2 Linux-虚拟机(2025.6.7学习篇- win版本)
  • QM系列闪测仪的强大功能解析
  • C++:用 libcurl 发送一封带有附件的邮件
  • LangChain4j 学习教程项目
  • 【C++进阶篇】C++11新特性(下篇)
  • 本地主机部署开源企业云盘Seafile并实现外部访问
  • 应用层协议:HTTPS
  • Linux进程控制
  • ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器
  • JAVA——反射
  • Windows 系统安装 Redis 详细教程
  • nginx日志的一点理解
  • Xxl-job——源码设计思考
  • Kerberos面试内容整理-未来发展趋势
  • 【大模型】大模型RAG(Retrieval-Augmented Generation)面试题合集
  • 解密LSTM(长短期记忆网络):让机器拥有记忆力的魔法网络
  • 【PhysUnits】15.17 比例因子模块 (ratio.rs)
  • 第二部分 方法,还是方法——“信管法则”的四大要点
  • 号外!PLC和安川伺服,通过Profinet转EtherCAT网关同步多个工作站的运动
  • SpiritTools:一款小而精的实用工具箱
  • 20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决
  • 20250607在荣品的PRO-RK3566开发板的Android13的uboot中使用gpio命令来配置GPIO的状态
  • 【Hugging Face】实践笔记:Pipeline任务、BERT嵌入层、Train任务、WandB解析
  • Python 训练营打卡 Day 38-Dataset和Dataloader类