当前位置:   article > 正文

Android Gradle Composing builds 管理三方依赖_build.gradle.kts

build.gradle.kts

Android Gradle Composing builds 管理三方依赖

最近在搞个自己的学习的Compose项目,于是也想尝试尝试新的依赖管理方式,也就是今天的主题 Gradle Composite
之前一直在 buildSrc管理依赖,使用非常方便,但是问题是我就修改一个版本号,你就给我全量更新,这可真的是让人头疼啊,于是Gradle Composing builds它来了。

先放出demo地址,方便大家学习。

https://github.com/leown/ComposingBuildsDemo

Gradle Composing builds 是啥?

摘自 Gradle 文档:复合构建只是包含其他构建的构建. 在许多方面,复合构建类似于 Gradle 多项目构建,不同之处在于,它包括完整的 builds ,而不是包含单个 projects

  • 组合通常独立开发的构建,例如,在应用程序使用的库中尝试错误修复时
  • 将大型的多项目构建分解为更小,更孤立的块,可以根据需要独立或一起工作

Gradle Composing builds 怎么用

我也参考了一些网上的文章,大多数都是依赖于build-toos 4.0.0+,本篇文章会以最新版本build-toos 7.1.2去配置。

  1. 创建plugin module,名称随意,这里我们命名为 plugin-version
    在这里插入图片描述

  2. 删除无用文件
    在这里插入图片描述

  3. 修改 plugin-version 中的 build.gradle.kts 文件

    plugins {
        id("java-gradle-plugin")
        id("org.jetbrains.kotlin.jvm") version "1.6.10"
    }
    
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    
    java {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    
    dependencies {
        //添加Gradle相关的API,否则无法自定义Plugin和Task
        implementation(gradleApi())
        implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")
    }
    
    gradlePlugin {
        plugins {
            create("version") {
                //添加插件
                id = "com.ileo.plugin.version"
                //在根目录创建类 VersionPlugin 继承 Plugin<Project>
                implementationClass = "com.ileo.plugin.version.VersionPlugin"
            }
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  4. 在plugin-version module中创建VersionPlugin类,继承Plugin(这里可以写一些逻辑处理,比如根据环境配置对应的key)

    package com.ileo.plugin.version
    
    import org.gradle.api.Plugin
    import org.gradle.api.Project
    
    
    class VersionPlugin : Plugin<Project> {
        override fun apply(target: Project) {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  5. 在plugin-version module中创建依赖包和版本号的 kt 文件(和buildSrc一样),可以声明多个kt文件

    package com.ileo.plugin.version
    
    /**
     * @author: ning.wang
     * @date: 2022-04-01 6:57 下午
     * @desc: 依赖包和版本号
     */
    object Libs {
        private const val activityVersion = "1.4.0"
        private const val fragmentVersion = "1.4.1"
        private const val recyclerviewVersion = "1.2.1"
        private const val appcompatVersion = "1.4.1"
        private const val constraintlayoutVersion = "2.0.4"
        private const val coreKtxVersion = "1.7.0"
        private const val testExtVersion = "1.1.2"
        private const val testEspressoVersion = "3.3.0"
        private const val junitVersion = "4.12"
    
        const val activity = "androidx.activity:activity-ktx:$activityVersion"
        const val fragment = "androidx.fragment:fragment-ktx:$fragmentVersion"
        const val recyclerview = "androidx.recyclerview:recyclerview:$recyclerviewVersion"
        const val appcompat = "androidx.appcompat:appcompat:$appcompatVersion"
        const val constraintlayout = "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion"
        const val coreKtx = "androidx.core:core-ktx:$coreKtxVersion"
        const val testExt = "androidx.test.ext:junit:$testExtVersion"
        const val testEspresso = "androidx.test.espresso:espresso-core:$testEspressoVersion"
        const val junit = "junit:junit:$junitVersion"
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  6. 在项目 settings.gradle.kts 文件内添加 includeBuild(“plugin-version”) ( 重点 \color{red}{重点} 重点

    pluginManagement {
        repositories {
            gradlePluginPortal()
            google()
            mavenCentral()
        }
    }
    dependencyResolutionManagement {
        repositories {
            google()
            mavenCentral()
        }
    }
    rootProject.name = "ComposingBuildsDemo"
    include(":app")
    includeBuild("plugin-version")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  7. 在app或module的 build.gradle.kts 中使用 plugin-version

    // 1. 导入plugin-version 依赖类
    import com.ileo.plugin.version.*
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
        // 2. 导入 plugin-version 插件
        id("com.ileo.version")
    }
    
    android {
        compileSdk = AndroidConfig.compileSdkVersion
    
        defaultConfig {
            applicationId = AndroidConfig.applicationId
            minSdk = AndroidConfig.minSdkVersion
            targetSdk = AndroidConfig.targetSdkVersion
            versionCode = AndroidConfig.versionCode
            versionName = AndroidConfig.versionName
    
            testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        }
    
        buildTypes {
            getByName("release") {
                isMinifyEnabled = false
                proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
            }
        }
        compileOptions {
            sourceCompatibility = JavaVersion.VERSION_1_8
            targetCompatibility = JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
    
    dependencies {
    
        // 使用plugin-version中声明的 Libs.kt 的三方库
        implementation(Libs.coreKtx)
        implementation(Libs.appcompat)
        testImplementation(Libs.junit)
        androidTestImplementation(Libs.testExt)
        androidTestImplementation(Libs.testEspresso)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

到此已经配置完成,大家快去玩耍起来吧!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/244478
推荐阅读
相关标签
  

闽ICP备14008679号