Gradle学习-7/19笔记

作者: 璟龙 | 来源:发表于2016-07-19 21:49 被阅读113次

    继上篇Gradle学习-7/18笔记

    Project对象

    Project属性

    1. 访问属性

    Gradle执行项目的build文件(build.gradle),生成一个Project对象。你写的脚本所使用的属性和方法都会被委托给这个Project对象。我们能够在我们的脚本中直接使用Project的属性和方法。
    例子:

    name="Hello" //委托给Project.name
    reportsDir = file('reports') //委托给Project.file()
    

    2. 属性域

    一个Project具有5个属性域(scope),通过属性域可以很方便地访问属性。以下是5个属性域:

    • Project固有属性域
      这个属性域中包含Project实现类中声明的属性的getters和setters。例如,Project.getRootProject()表示访问rootProject属性。这些属性是否可读可写取决于它们的getter或setter是否存在。
    • 扩展属性域(Extra Properties)
      每个project都维护者一个扩展属性的map,这个map可以包含任意的键值对。
    • 插件的扩展属性域
    • convention properties(貌似也是一个由插件扩展出的属性域,从官方文档中没看懂介个是什么意思,懂得兄弟可以解释下)
    • project的tasks域
      一个task可以通过task的name直接访问。这个域中的属性都是只读的。
    属性读写方式:

    读属性或写属性时,project都会按顺序从上述域中搜索,在搜索到的第一个域中读出或写入。

    3. Extra Properties

    所有的Extra Properties必须通过"ext"命名空间来定义,即定义的时候加前缀"ext."。一旦一个属性通过这种方式定义后,在该project下(包含其子工程sub-projects)可以直接访问。

    示例代码

    //初始化需要"ext."
    println "init"
    project.ext.prop1 = 'hello'
    task doStuff{
         println "doStuff Start"
          //再次访问不需要前缀
         println prop1
         prop1 = 'doStuff_hello'
         println "doStuff End"
    
    }
    allprojects{
         println prop1
    }
    

    结果

    init
    doStuff Start
    hello
    doStuff End
    doStuff_hello
    

    相关文章

      网友评论

      • 207d4ba9195c:原来是简书上的老司机啊,璟龙

        from 森雨

      本文标题:Gradle学习-7/19笔记

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