Step into Gradle - 03 - Properties

目录

摘要

System Properties,Project Properties,Extra Properties,普通变量,属性文件

Properties

System Properties

定义 System 属性

格式

gradle taskName -D属性名=xxxx

在脚本中通过 System.properties[属性名] 来获取。

task echo << {
    println System.getProperty("abc")   //123
    println System.getProperty("def")   //null
    if (hasProperty("zxc")) {
        println System.getProperty("zxc")
    }
}

运行

gradle -q echo -Dabc=123

获取不存在的属性时会返回 null

Project Properties

定义 Project 属性

格式

gradle taskName -P属性名=xxxx

在脚本中通过 属性名 来获取。

task echoProj << {
    println foo         //bar
//    println foo2    //exception
    if (hasProperty("foo3")) {
        println foo3
    }
}

运行

gradle -q echoProj -Pfoo=bar

获取不存在的属性会抛出异常,所以需要先进行判断

Extra Properties

动态属性,必须使用 ext 在脚本中指定

ext.属性名=xxx
  • 定义在 task 外的为 project 属性,task 内的为 task 属性
  • task 内部访问 project 的 ext 属性时,不要加前缀 “ext”。
  • task 内部访问自身的 ext 属性时,前缀 “ext”可加可不加。

ext.extFoo = "extProjectBar"
task echoExt << {
    //println ext.extFoo    //exception
    println extFoo  //extProjectBar

    ext.extFoo2 = "extTaskBar"
    println extFoo2 //extTaskBar
    println ext.extFoo2 //extTaskBar
}

运行

gradle -q echoExt

结合 SourceSets 的例子

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       //3.1.0.RELEASE
    println emailNotification   //build@master.org
    sourceSets.matching { it.purpose == "production" }.each { println it.name }
}

运行

gradle -q printProperties

输出

main
plugin

普通变量

使用关键字 def 定义

def x = 1
task echoVar << {
    def y = 2
    println x   //1
    println y   //2
}

运行

gradle -q echoVar

属性文件

属性文件与 build.gradle 位于同文件夹,名为 gradle.properties。在 build 脚本中可以直接访问此文件中的属性。

定义属性

POM_GROUP_ID=com.example
POM_ARTIFACT_ID=hello
POM_VERSION=0.0.1-SNAPSHOT

访问

task info << {
    println POM_GROUP_ID   //com.example
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值