zoukankan      html  css  js  c++  java
  • Gradle的属性设置大全

    Gradle的属性设置大全

    Gradle作为一款项目构建工具,由于其强大、灵活、快速、完全兼容Ant等特性,越来越受到人们欢迎。Gradle的灵活有时候也会引起人们的困惑。比如在Gradle中设置变量和属性就有N种办法。由于Gradle的理念是Convention over configruation(约定优于配置),所以如果了解了这些约定,那么在使用Gradle的属性配置时一定会如鱼得水。


    在项目根目录下建立名为gradle.properties文件,在该文件中定义需要的属性。这些属性在Gradle构建Gradle领域对象(即project对象实例)时会被自动加到project对象实例中作为其属性被直接调用。

    gradle.properties
    1
    
    guestName= Bowen
    
    build.gradle
    1
    2
    3
    4
    
    task hello << {
         println $guestName
         println "hello, $guestName"
    }
    
    1
    2
    3
    4
    5
    6
    
    $ gradle hello -q
    Bowen
    hello, Bowen
    $ gradle properties | grep guestName
    guestName: Bowen
    

    定义在build.gradle中的ext块中。ext准确的说是Gradle领域对象的一个属性,我们可以将自定义的属性添加到ext对象上,Build.gradle中的其它代码片段可以使用。

    build.gradle
    1
    2
    3
    4
    5
    6
    7
    8
    
    ext {
         guestName='Bowen'
    }
    task hello << {
         println guestName
         println "hello, $guestName"
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    
    $ gradle hello -q
    Bowen
    hello, Bowen
    $ gradle properties | grep guestName
    guestName: Bowen
    $ gradle properties | grep ext
    ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@10ef5fa0
    

    从上述可以看到ext对象其实是DefaultExtraPropertiesExtension对象的一个实例。


    在命令行中通过-D或者-P给Gradle实时创建属性。 -D属性会被传送给启动Gradle的jvm,作为一个系统属性被jvm使用。

    build.gradle
    1
    2
    3
    
    task hello << {
         println System.properties['guestName']
    }
    
    1
    2
    
    $ gradle hello -DguestName='Bowen' -q
    Bowen
    

    -P属性则会被直接加载到Gradle领域对象上。

    build.gradle
    1
    2
    3
    
    task hello << {
          println "hello, $guestName"
    }
    
    1
    2
    
    $ gradle hello -PguestName='Bowen' -q
    hello, Bowen
    

    在Gradle配置文件中创建系统属性。刚讲过在gradle.properties文件可以创建属性,同时我们也可以创建系统属性。如果有systemProp.前缀的属性会被识别为系统属性。

    gradle.properties
    1
    
    systemProp.guestName = 'Bowen'
    
    build.gradle
    1
    2
    3
    
    task hello << {
          println "hello, " + System.properties['guestName']
    }
    
    1
    2
    
    $ gradle hello -q
    hello, Bowen
    

    将特殊前缀的系统属性或环境变量自动加入到Gradle领域对象中。

    如果有环境变量以ORG_GRADLE_PROJECT.为前缀,那么该变量会被自动添加到Gradle领域对象中。同样,如果有系统属性以org.gradle.project.为前缀,那么也会被自动加入到Gradl领域对象中。这一特性的目的之一是为了隐藏一些敏感的信息。比如在执行Gradle脚本时需要传入密码信息,如果以-P的方式传送会被别人看到。而把该属性保存为环境变量,只有系统管理员才有权访问和修改。在运行Gralde的时候该环境变量会被自动加入到Gradle对象中被使用,隔离了明暗数据,又不行影响其他用户使用。(其他用户可以通过-P方式是设置该属性)。

    build.gradle
    1
    2
    3
    
    task hello << {
          println "hello, " + guestName
    }
    
    1
    2
    3
    4
    5
    6
    
    $ gradle hello -Dorg.gradle.project.guestName=Bowen -q
    hello, Bowen
    $ export ORG_GRADLE_PROJECT_guestName=Bob
    $ gradle hello -q
    hello, Bob
    
     
  • 相关阅读:
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(2)--理解SP Server2010的Web内容管理
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(1)--创建一个发布网站
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容
    一步步学习SPD2010--第十二章节--理解可用性和可接入性(8)--关键点
    亚马逊推自家云备份产品,第三方云备份厂商压力山大 中国存储网
    几何概率模型是什么
    宋浩《概率论与数理统计》笔记---1..1.1-1.1.3、概率论基本概念
    机器学习疑难---1、什么是多元线性回归
    最大似然估计线性回归实例
    Hopfield神经网络 简介
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/10845245.html
Copyright © 2011-2022 走看看