第 6 章 · 依赖管理:implementation 五兄弟 + 冲突解决

3 个互动演示帮你彻底搞懂依赖配置、传递依赖、版本仲裁。

👯 implementation 五兄弟可见性矩阵

点击下面的配置卡片,看它具体的可见性、是否传递、典型场景。

📋 完整可见性矩阵

Configuration 编译可见 运行可见 打进 jar 传递给消费者
implementation
api
compileOnly
runtimeOnly
testImplementation 仅测试 仅测试

🌳 依赖传递 + 冲突仲裁演示

选一个场景,看 Gradle 实际拉到的依赖树和冲突解决过程。

📜 输入的 build.gradle.kts



        

🌲 ./gradlew dependencies 输出(部分)

💡 解读

🏪 仓库一览:从哪儿拉 jar

Gradle 默认不带任何仓库,你必须在 repositories {} 里至少声明一个。

公共Maven Central
https://repo.maven.apache.org/maven2/
最大的 Java 公共仓库,~1500 万 artifacts。绝大多数开源 Java/Kotlin 项目都在这里。
repositories { mavenCentral() }
公共Google Maven
https://maven.google.com/
Android、Jetpack、Firebase、Material Design 都在这里。Android 项目必装。
repositories { google() }
公共Gradle Plugin Portal
https://plugins.gradle.org/
Gradle 官方插件市场。放在 settings.gradle.kts 的 pluginManagement 块里
pluginManagement {
    repositories { gradlePluginPortal() }
}
镜像阿里云中央镜像
https://maven.aliyun.com/repository/public
国内访问 Maven Central 慢的话用这个。镜像 Central + jcenter + spring 等。
maven("https://maven.aliyun.com/repository/public")
镜像阿里云 Google 镜像
https://maven.aliyun.com/repository/google
Android 项目专用,加速 google() 的访问。
maven("https://maven.aliyun.com/repository/google")
私服Nexus / Artifactory
https://nexus.your-company.com/repository/...
公司内部私服,发自家的 jar。需要凭证。
maven {
    url = uri("https://nexus...")
    credentials {
        username = providers.gradleProperty("nexusUser").get()
        password = providers.gradleProperty("nexusPass").get()
    }
}

⚙️ 推荐配置(settings.gradle.kts 集中管理)

// settings.gradle.kts
pluginManagement {
    repositories {
        // 国内:先镜像,后官方
        maven("https://maven.aliyun.com/repository/gradle-plugin")
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

dependencyResolutionManagement {
    // 强制集中:子模块不许自己加 repositories {}
    repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
    repositories {
        maven("https://maven.aliyun.com/repository/public")
        maven("https://maven.aliyun.com/repository/google")
        mavenCentral()
        google()
    }
}

💡 仓库**按声明顺序**查找。镜像放前面能加速,找不到再走 Central 兜底。