标签:
?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========
标签:
原文地址:http://my.oschina.net/xinxingegeya/blog/510343