请通过以下方式下载本系列文章的Github示例代码:
git clone https://github.com/davenkin/gradle-learning.git
在前面的文章中我们讲到,设置和读取Project的Property是使用Gradle的一个很重要的方面。比如,很多Plugin都会向Project中加入额外的Property,在使用这些Plugin时,我们
需要对这些Property进行赋值。
Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有:
project:Project本身
name:Project的名字
path:Project的绝对路径
description:Project的描述信息
buildDir:Project构建结果存放目录
version:Project的版本号
以下,我们首先设置Project的version和description属性,再定义showProjectProperties以打印这些属性:
version = 'this is the project version' description = 'this is the project description' task showProjectProperties << { println version println project.description }
请注意,在打印description时,我们使用了project.description,而不是直接使用description。原因在于,Project和Task都拥有description属性,而定义Task的闭包将delegate设置
成了当前的Task,故如果直接使用description,此时打印的是showProjectProperties的description,而不是Project的,所以我们需要显式地指明project。有关delegate的更多知识,请参考本系列的这篇文章。
Gradle还为我们提供了多种方法来自定义Project的Property。
(1)在build.gradle文件中定义Property
在build.gradle文件中向Project添加额外的Property时,我们并不能直接定义,而是应该通过ext来定义。如果要添加一个名为property1的Property,我们应该:
ext.property1 = "this is property1"
另外,我们也可以通过闭包的方式:
ext { property2 = "this is property2" }
在定义了Property后,使用这些Property时我们则不需要ext,而是可以直接访问:
task showProperties << {
println property1
println property2
}
事实上,任何实现了ExtensionAware接口的Gradle对象都可以通过这种方式来添加额外的Property,比如Task也实现了该接口。
(2)通过命令行参数定义Property
Gradle还提供了-P命令行参数来设置Property,比如:
task showCommandLieProperties << {
println property3
}
在执行“gradle showCommandLieProperties”时,终端输出如下:
* What went wrong: Execution failed for task ':showCommandLieProperties'. > Could not find property 'property3' on task ':showCommandLieProperties'.
表示property3并没有被定义,在调用gradle命令时,通过-P参数传入该Property:
gradle -Pproperty3="this is property3" showCommandLieProperties
此时终端显示:
:showCommandLieProperties this is property3 BUILD SUCCESSFUL
(3)通过JVM系统参数定义Property
我们知道,在java中,我们可以通过-D参数定义JVM的系统参数,然后在代码中可以可以通过System.getProperty()进行获取。在Gradle中,我们也可以通过-D的方式向Project传入
Property,只是此时我们需要遵循一些约定:每一个通过-D方式声明的Property都需要以“org.gradle.project”为前缀,对于上面的showCommandLieProperties,我们也可以通过以下方式
设置property3:
gradle -Dorg.gradle.project.property3="this is another property3" showCommandLieProperties
(4)通过环境变量设置Property
我们还可以通过设置环境变量的方式设置Project的Property。这种方式和(3)一样,需要我们遵循一些约定:在定义环境变量时,每一个Property都需要以“ORG_GRADLE_PROJECT_”为前缀:
export ORG_GRADLE_PROJECT_property3="this is yet another property3"
在调用showCommandLieProperties时,我们便不需要传入命令行参数了:
gradle showCommandLieProperties
在笔者所工作的项目中,我们的持续集成服务器便是通过这种方式为Gradle设置Property的。
相关推荐
使用AndroidStudio自定义Gradle插件源代码,https://blog.csdn.net/heart2016/article/details/85257133
手把手带你自定义 Gradle 插件 —— Gradle 系列(2).doc
cordova生成android的settings.gradle配置module(csdn)————程序
主要介绍了Android 自定义gradle property详解及实例代码的相关资料,需要的朋友可以参考下
情景:从项目中拿到一个客户的demo工程,或者导入一个别人的工程,编译时出现 Error:No such property: GradleVersion for class: JetGradlePlugin: 原因:这是gradle的版本太高导致的 解决办法: 第一步:打开...
通过自定义Gradle插件,修改class文件
IDEA中Gradle学习指南
主要介绍了为Android Studio编写自定义Gradle插件的教程,Android Studio现在基本上已经成为了安卓开发的标配IDE,友可以参考下
Gradle快速下载器—— 顾名思义,就是解决下载gradle时出现timout超时/Gradle下载时间长的问题,用于快速下载指定版本的gradle到Gradle目录。 其原理是自动从国内的gradle镜像源下载指定版本的gradle文件,并自动...
需要深入浅出的学习Android studio中的Gradle朋友可前来下载观看。 这个里面是百度云盘的资源链接。
自定义gradle插件实现,以及通过插件来修改编译后的class文件和监控Task任务执行情况
ionic工程已经安装好插件
本文侧重于了解自定义properties文件,以及properties中的数据格式,在gradle中如何使用等知识点。 一、概述 在Android Studio 创建一个项目的时候,rootProject下面会生成gradle.properties和local.properties文件...
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy....文档详细说明的gradle的使用规则以及语法,离线环境下可以学习此文档。
为什么说 Gradle 是 Android 进阶绕不去的坎 —— Gradle 系列(1).doc
gradle学习资料2
gradle学习资料3
网络红文 实战gradle,android,java开发人员的必修课