首页 > 其他分享 >Gradle 8 使用教程:Maven 仓库导入、依赖管理与 TOML 配置详解

Gradle 8 使用教程:Maven 仓库导入、依赖管理与 TOML 配置详解

时间:2024-11-20 09:45:57浏览次数:3  
标签:依赖 gradle Maven TOML libs Gradle junit

Gradle 是 Java 和 Android 项目中广泛使用的构建工具,以灵活和高效著称。然而,随着 Gradle 版本的迭代,它的配置方式也发生了变化。例如,Gradle 8 开始对一些老旧的配置方式进行优化,推荐新的 DSL 和工具,使构建脚本更具一致性和可维护性。

本文将带你深入了解:

  1. Gradle 8 中如何导入其他 Maven 仓库。
  2. 如何正确引入依赖。
  3. TOML 文件在依赖管理中的作用及使用方法。
  4. Gradle 新版工具链的优势和实战示例。

文章目录

一、Gradle 8 中导入其他 Maven 仓库

Gradle 8 推荐使用 dependencyResolutionManagement 来集中管理项目的依赖仓库,而不是传统的 allprojects 配置。这种方式更加现代化,也更符合模块化开发的需求。

1.1 传统方式 (allprojects) 的问题

过去,仓库管理通常在 allprojects 中完成:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven {
            url "https://artifact.bytedance.com/repository/Volcengine/"
        }
    }
}

问题:

  • 全局定义仓库可能导致重复配置,不够灵活。
  • Gradle 官方对 allprojects 的支持逐渐减少,未来可能会完全废弃。
1.2 推荐的方式:dependencyResolutionManagement

settings.gradle.ktssettings.gradle 文件中,通过 dependencyResolutionManagement 集中管理仓库:

Kotlin DSL 示例:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://artifact.bytedance.com/repository/Volcengine/")
        }
    }
}

Groovy DSL 示例:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url 'https://artifact.bytedance.com/repository/Volcengine/'
        }
    }
}
配置解释:
  1. repositoriesMode 设置:

    • FAIL_ON_PROJECT_REPOS:禁止模块级 build.gradle 自行定义仓库,强制集中管理。
    • PREFER_PROJECT:优先模块定义的仓库。
  2. 仓库定义:

    • google()mavenCentral() 是默认仓库。
    • 自定义仓库通过 maven 配置,推荐使用 uri() 方法来设置地址。

二、依赖的引入与管理

Gradle 8 提供了更加现代化的依赖管理工具,让开发者可以轻松地管理版本、模块和依赖关系。

2.1 在 build.gradle.kts 中添加依赖

使用 Kotlin DSL 时,添加依赖的方式如下:

dependencies {
    implementation("com.squareup.retrofit2:retrofit:2.9.0")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
    testImplementation("junit:junit:4.13.2")
}
2.2 配置依赖版本号

依赖的版本号可以直接写在代码中,但更好的方式是集中管理依赖版本号。Gradle 8 强烈推荐使用 TOML 文件。


三、TOML 文件简介与依赖版本管理

3.1 什么是 TOML?

TOML (Tom’s Obvious, Minimal Language) 是一种简单的配置文件格式,类似于 JSON 或 YAML,但更容易书写和阅读。Gradle 8 开始支持用 TOML 来集中管理依赖版本。

3.2 为什么使用 TOML?
  • 集中管理版本:减少重复定义版本号。
  • 易读性:文件结构清晰,一目了然。
  • 模块化:支持按功能组织依赖。
3.3 配置 TOML 文件管理依赖
  1. 在项目的 gradle 文件夹中创建 libs.versions.toml 文件:

    ├── gradle
    │   ├── libs.versions.toml
    ├── settings.gradle.kts
    ├── build.gradle.kts
    
  2. libs.versions.toml 文件中定义依赖:

    [versions]
    kotlin = "1.8.10"
    coroutines = "1.6.4"
    retrofit = "2.9.0"
    junit = "4.13.2"
    
    [libraries]
    kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
    coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" }
    retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
    junit = { module = "junit:junit", version.ref = "junit" }
    
  3. 在项目中启用版本管理:
    settings.gradle.kts 文件中添加以下代码:

    dependencyResolutionManagement {
        versionCatalogs {
            create("libs") {
                from(files("gradle/libs.versions.toml"))
            }
        }
    }
    
  4. build.gradle.kts 文件中引用依赖:

    dependencies {
        implementation(libs.kotlinStdlib)
        implementation(libs.coroutinesAndroid)
        implementation(libs.retrofit)
        testImplementation(libs.junit)
    }
    
3.4 TOML 配置解析
  • [versions]:定义依赖的版本号。
  • [libraries]:定义依赖的模块和版本绑定。
  • version.ref:引用 [versions] 中定义的版本号。

四、Gradle 新版工具链的优势

  1. 高效依赖解析:集中管理仓库和依赖,避免模块间配置冲突。
  2. 可维护性:通过 TOML 配置文件实现版本号集中管理,减少重复定义。
  3. 灵活扩展:支持自定义版本目录和模块化配置。

五、Gradle 8 实战示例

以下是一个使用 TOML 配置和 Maven 仓库的完整示例:

5.1 settings.gradle.kts
pluginManagement {
    repositories {
        google()
        gradlePluginPortal()
    }
}

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://artifact.bytedance.com/repository/Volcengine/")
        }
    }
    versionCatalogs {
        create("libs") {
            from(files("gradle/libs.versions.toml"))
        }
    }
}

rootProject.name = "MyProject"
include(":app")
5.2 gradle/libs.versions.toml
[versions]
kotlin = "1.8.10"
coroutines = "1.6.4"
retrofit = "2.9.0"
junit = "4.13.2"

[libraries]
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" }
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
junit = { module = "junit:junit", version.ref = "junit" }
5.3 build.gradle.kts
plugins {
    kotlin("android")
}

android {
    compileSdk = 34
    defaultConfig {
        applicationId = "com.example.myproject"
        minSdk = 21
        targetSdk = 34
    }
}

dependencies {
    implementation(libs.kotlinStdlib)
    implementation(libs.coroutinesAndroid)
    implementation(libs.retrofit)
    testImplementation(libs.junit)
}

六、总结

Gradle 8 的新特性让依赖管理更加集中化和模块化,特别是引入 TOML 文件后,依赖管理变得更高效。虽然新版本的配置方式可能需要一些学习成本,但它带来的灵活性和可维护性将使你的项目受益良多。

最后吐槽一下,Gradle是真tm难用

标签:依赖,gradle,Maven,TOML,libs,Gradle,junit
From: https://blog.csdn.net/qq_37945670/article/details/143804275

相关文章

  • 解决 `Missing ‘package‘ key attribute on element package` 错误:Gradle 版本过低
    在Android项目开发中,AndroidManifest.xml是核心配置文件之一。最近在构建项目时,我遇到了Missing'package'keyattributeonelementpackage的错误,经过深入排查发现其根本原因是Gradle版本过低。本文将详细解析问题的成因,并分享完整的解决方法。错误描述构建项......
  • mac安装maven3.8.8
    问题描述down了一个新应用,maven依赖总是加载不到,本地仓库也能找到,项目启动报错 org.apache.skywalking:apm-toolkit-trace:pom:5.0.0-RC-SNAPSHOTfailedtotransferfromhttp://0.0.0.0/duringapreviousattempt.Thisfailurewascachedinthelocalreposit......
  • Maven项目编译生成jar包
    <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version......
  • 安装配置maven
    1.下载安装包2.解压到安装目录3.配置环境变量此电脑-右键-属性-高级设置-环境变量在系统变量内新建MAV_HOME变量变量值为maven根目录地址。进入系统变量下Path内,添加,D:\workspace\utils\apache-maven-3.9.9\apache-maven-3.9.9\bin添加环境变量。然后确定保存。4.......
  • Maven的安装配置及idea中配置maven
    Maven下载1、官网地址:https://maven.apache.org/按需下载对应的版本,这里需要注意,不同版本maven对JDK和Idea的版本有对应要求。2、阿里云开发者社区下载:https://developer.aliyun.com/Maven安装将maven压缩包解压到没有中文的目录下,即可。maven目录介绍:bin可执......
  • 一文读懂maven
    一、什么是mavenmaven是一个项目管理工具,通过pom.xml文件的配置获取jar包不用手动的去添加jar包就是在java项目和web项目上裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能,即通过pom.xml添加jar包就像在蜜汁......
  • Maven项目管理工具概述
    Maven简介Maven概念Maven是java平台下的一款项目构建和依赖的管理工具,maven通过使用配置文件的方式,使得在项目管理和交接方面成本变得很低。maven提出了一个仓库的概念,我们可以把第三方或者需要引用的项目,放在maven仓库中,当任何人需要使用时,可以通过配置文件,直接连仓库进......
  • frp(最新版本toml)
    frp(最新版本toml)介绍frp是一个简单高效的内网穿透工具。但是我在安装使用frp来内穿透我自己的家用服务器的时候,出现了大量的问题,比如格式不对,连接拒绝等等错误,导致我连续弄了好几天才搞明白。所以我出一集我自己理解的最新版本的(相对于.ini的文件).toml的内穿透教程。前期准备......
  • Gradle的多模块
    安装tree后执行tree-f.>tr.txt可以生产下面的代码结构├──./api-test│├──./api-test/build.gradle│└──./api-test/src│└──./api-test/src/main│└──./api-test/src/main/java├──./build.gradle├──./gr......
  • win11下安装maven及配置idea maven
    官网下载maven,地址:https://maven.apache.org/download.cgi下载好之后,解压到某一个盘目录下,本人解压到:D:\Develop\Java,后面配置环境变量时以自己解压路径目录为准配置环境变量在系统变量中新增变量MAVEN_HOME="自己解压的路径目录"在系统变量中找到path,双击打开......