cyrushine / bookmark

4 stars 1 forks source link

使用 Kotlin + buildSrc 更好地编写和管理 Gradle 依赖 #31

Open cyrushine opened 2 years ago

cyrushine commented 2 years ago

Kotlin + buildSrc for Better Gradle Dependency Management

Kotlin + buildSrc:更好的管理Gadle依赖

  1. 👎 最原始:在 gradle dependencies 里直接使用 implementation "io.reactivex.rxjava2:rxjava:2.1.9"

  2. 👎 稍稍有点管理:在 gradle extra 里编写依赖代码块

ext {
  versions = [
    support_lib: "27.0.2",
    rxjava: "2.1.9"
  ]
  libs = [
    support_annotations: "com.android.support:support-annotations:${versions.support_lib}",
    support_appcompat_v7: "com.android.support:appcompat-v7:${versions.support_lib}",
    rxjava: "io.reactivex.rxjava2:rxjava:${versions.rxjava}"
  ]
}

implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.rxjava
  1. 👍 the best choice: 使用 buildSrc 模块

image

Gradle Sync 后我们可以在 Gradle 中访问 Dependencies.kt 中任何值了,看起来结果与 gradle extra 非常相似,但是它支持自动补全单击跳转

// buildSrc/build.gradle.kts
plugins {
    `kotlin-dsl`
}

// buildSrc/src/main/java/Dependencies.kt
object Versions {
    val support_lib = "27.0.2"
    val rxjava = "2.1.9"
}

object Libs {
 val support_annotations = "com.android.support:support-annotations:${Versions.support_lib}"
 val support_appcompat_v7 = "com.android.support:appcompat-v7:${Versions.support_lib}"
 val rxjava = "io.reactivex.rxjava2:rxjava:${Versions.rxjava}"
}

// build.gradle
implementation Libs.support_annotations
implementation Libs.support_appcompat_v7
implementation Libs.rxjava