3 个互动演示帮你彻底搞懂依赖配置、传递依赖、版本仲裁。
点击下面的配置卡片,看它具体的可见性、是否传递、典型场景。
| Configuration | 编译可见 | 运行可见 | 打进 jar | 传递给消费者 |
|---|---|---|---|---|
| implementation | ✓ | ✓ | ✓ | ✗ |
| api | ✓ | ✓ | ✓ | ✓ |
| compileOnly | ✓ | ✗ | ✗ | ✗ |
| runtimeOnly | ✗ | ✓ | ✓ | ✗ |
| testImplementation | 仅测试 | 仅测试 | ✗ | ✗ |
选一个场景,看 Gradle 实际拉到的依赖树和冲突解决过程。
Gradle 默认不带任何仓库,你必须在 repositories {} 里至少声明一个。
repositories { mavenCentral() }
repositories { google() }
pluginManagement {
repositories { gradlePluginPortal() }
}
maven("https://maven.aliyun.com/repository/public")
maven("https://maven.aliyun.com/repository/google")
maven {
url = uri("https://nexus...")
credentials {
username = providers.gradleProperty("nexusUser").get()
password = providers.gradleProperty("nexusPass").get()
}
}
// 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 兜底。