码迷,mamicode.com
首页 > 其他好文 > 详细

Gradle自定义property

时间:2015-09-23 19:40:05      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

?Gradle自定义property

设置和读取Project的Property是使用Gradle的一个很重要的方面。比如,很多Plugin都会向Project中加入额外的Property。

在使用这些Plugin时,我们需要对这些Property进行赋值。

Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有:

project:Project本身

name:Project的名字

path:Project的绝对路径

description:Project的描述信息

buildDir:Project构建结果存放目录

version:Project的版本号

我们下面来写一个task输出这些property,如下,

task printProperties << {
    println project
    println project.name
    println name
    println project.buildDir
    println buildDir
    println project.buildFile
    println buidlFile
    println project.version
    println version
}

执行输出结果,

?  Gradle-Showcase  gradle -q printProperties
root project ‘Gradle-Showcase‘
Gradle-Showcase
/Users/xinxingegeya/workspace-gitosc/Gradle-Showcase/build
/Users/xinxingegeya/workspace-gitosc/Gradle-Showcase/build.gradle
1.0-SNAPSHOT
1.0-SNAPSHOT


Gradle还为我们提供了多种方法来自定义Project的Property。

(1)在build.gradle文件中定义Property

在build.gradle文件中向Project添加额外的Property时,我们并不能直接定义,而是应该通过ext来定义。如果要添加一个名为property1的Property,我们应该:

ext.property1 = "value1"
ext.property2 = "value2"

task printlnOwnerProperty << {
    println property1
    println property2
}

打印自己定义的property,输出,

?  Gradle-Showcase  gradle -q printlnOwnerProperty
value1
value2

另外,我们也可以通过闭包的方式:

ext {
    property1 = "value1"
    property2 = "value2"
}

task printlnOwnerProperty << {
    println property1
    println property2
}

事实上,任何实现了ExtensionAware接口的Gradle对象都可以通过这种方式来添加额外的Property,比如Task也实现了该接口。


2)通过命令行参数定义Property

Gradle还提供了-P命令行参数来设置Property,比如:

task printlnOwnerProperty << {
    println property3
}

通过命令行定义property3 这个property,如下,

?  Gradle-Showcase  gradle -Pproperty3=‘value3‘ -q printlnOwnerProperty
value3


(3)通过JVM系统参数定义Property

我们知道,在java中,我们可以通过-D参数定义JVM的系统参数,然后在代码中可以可以通过System.getProperty()进行获取。在Gradle中,我们也可以通过-D的方式向Project传入Property,只是此时我们需要遵循一些约定:每一个通过-D方式声明的Property都需要以“org.gradle.project”为前缀,对于上面的printlnOwnerProperty,我们也可以通过以下方式设置property3:

?  Gradle-Showcase  gradle -Dorg.gradle.project.property3="value3" -q printlnOwnerProperty 
value3


(4)通过环境变量设置Property

我们还可以通过设置环境变量的方式设置Project的Property。这种方式和(3)一样,需要我们遵循一些约定:在定义环境变量时,每一个Property都需要以“ORG_GRADLE_PROJECT_”为前缀:

?  Gradle-Showcase  export ORG_GRADLE_PROJECT_property3="value3"
?  Gradle-Showcase  gradle -q printlnOwnerProperty              
value3

========END========

Gradle自定义property

标签:

原文地址:http://my.oschina.net/xinxingegeya/blog/510343

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!