• Home
  • About
    • wanziの遇笺 photo

      wanziの遇笺

      一点随笔,一丝感悟,一些记录,一种成长。

    • Learn More
    • Instagram
    • Github
  • Archive
  • Category
  • Tag

Gradle Property

29 Aug 2015

Reading time ~1 minute

  很多Plugin都会向Project中加入额外的Property,在使用这些Plugin时,我们需要对这些Property进行赋值。
Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有:

project:Project本身
name:Project的名字
path:Project的绝对路径
description:Project的描述信息
buildDir:Project构建结果存放目录
version:Project的版本号

一、project属性配置

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。

二、Task属性配置

1、对desctiption属性的配置

(1)定义时候对description属性的配置

build.gradle:

task myTask << {
  description = "this is myProperty"
  println description
}
(2)myTask.description
task myTask << {
      println description
}
myTask.description = "this is myProperty"
(3) 同名的方法中设置description
task myTask << {
      println description
}
myTask{
      description = "this is myProperty"
}
(4)调用Task的configure()方法,配置description属性

build.gradle

task myTask << {
  println description
}
myTask.configure {
  description = "this is myProperty"
}

运行,结果:

$ gradle -q myTask
this is myProperty

2、自定义属性的配置

(1) 额外自定义属性的配置

build.gradle:

task myTask {
    ext.myProperty = "this is myProperty"
}

task printTaskProperties << {
    println myTask.myProperty
}

也可以使用闭包的方式:

ext { myProperty = "this is myProperty"}

Terminal:

$ gradle -q printTaskProperties
this is myProperty
(2) 通过命令行参数自定义Property

build.gradle

task myTask << {
      println myProperty
}

此时,会报错:

* What went wrong:
Execution failed for task ':myTask'.
> Could not find property 'myProperty' on task ':myTask'.

表示myProperty并没有被定义,在调用gradle命令时,通过-P参数传入该Property:

$ gradle -PmyProperty="this is myProperty" myTask                  
:myTask
this is myProperty


gradle Share Tweet +1