美文网首页
Gradle 编写构建脚本

Gradle 编写构建脚本

作者: dlihasa | 来源:发表于2018-10-10 17:53 被阅读52次

    前言

    本篇gradle构建脚本的编写是按照android项目中build.gradle的常用的点来进行梳理的。

    可以通过DSL Reference文档查看Gradle DSL支持的语法配置项,下面是一些配置文档:

    Gradle 构建语言

    Gradle 提供一种领域特定语言或者说是 DSL,来描述构建。这种构建语言基于 Groovy 中,并进行了一些补充,使其易于描述构建。

    (1)ext,额外属性

    Gradle 的域模型中,所有增强的对象都可以容纳用户定义的额外的属性。这包括但并不限于项目(project)、任务(task)和源码集(source set)。额外的属性可以通过所属对象的 ext 属性进行添加,读取和设置。或者,可以使用 ext 块同时添加多个属性。

    例子1. 使用额外属性
    apply plugin: "java"
    ext {
        springVersion = "3.1.0.RELEASE"
        emailNotification = "build@master.org"
    }
    sourceSets.all { ext.purpose = null }
    sourceSets {
        main {
            purpose = "production"
        }
        test {
            purpose = "test"
        }
        plugin {
            purpose = "production"
        }
    }
    task printProperties << {
        println springVersion
        println emailNotification
        sourceSets.matching { it.purpose == "production" }.each { println it.name }
    }   
    

    gradle -q printProperties的输出结果

    3.1.0.RELEASE
    build@master.org
    main
    plugin
    

    在此示例中, 一个 ext 代码块将两个额外属性添加到 project 对象中。此外,通过将ext.purpose 设置为 null(null是一个允许的值),一个名为 purpose 的属性被添加到每个源码集(source set)。一旦属性被添加,他们就可以像预定的属性一样被读取和设置。

    额外属性在任何能够访问它们所属的对象的地方都可以被访问,这使它们有着比局部变量更广泛的作用域。父项目上的额外属性,在子项目中也可以访问。根据这个来看第二个例子
    例子2 android studio项目中各个build.gradle中的配置:

    project中的build.gradle:

    ext {
        VERSION_COMPILE_SDK = 27
        VERSION_BUILD_TOOLS = '26.0.2'
    
        VERSION_MIN_SDK = 15
        VERSION_TARGET_SDK = 25
    
        SOURCE_COMPATIBILITY = JavaVersion.VERSION_1_7
    }
    

    project下多个子项目中build.gradle:

    defaultConfig {
            applicationId "com.didi.virtualapk"
            minSdkVersion VERSION_MIN_SDK
            targetSdkVersion VERSION_TARGET_SDK
            versionCode 3
            versionName "1.0.0"
        }
        compileOptions {
            sourceCompatibility SOURCE_COMPATIBILITY
        }
    

    通过上面这个例子中,我怎么感觉这就是在公共部分中(或者父类)设置了一些变量,在子项目(或者子类)中直接使用

    无意中发现这个博客,写的很全面,既然有了,那就到此为止吧,有需要可以看这里Android Gradle配置快速入门

    相关文章

      网友评论

          本文标题:Gradle 编写构建脚本

          本文链接:https://www.haomeiwen.com/subject/uhhmaftx.html