Gradle 语法

Posted zhaoqiang1980

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle 语法相关的知识,希望对你有一定的参考价值。

参考文章:

Gradle学习系列之二——创建Task的多种方法(http://www.cnblogs.com/CloudTeng/p/3417970.html

Gradle基本知识点与常用配置(https://segmentfault.com/a/1190000006915937)

Gradle 中的语法

目录

  1. 创建task
  2. 自定义task
  3. project
  4. closure and action

1.创建task

cmd:  gradle -q [taskname]

-q 表示不打印输出日志信息。即仅显示结果。

task有两个生命周期,配置阶段和执行阶段

1. <<     (追加)  *  在gradle5.0后会被去掉,建议使用doLast代替

  即向任务名追加执行过程。

task hello << {
   println \'hello, this world\'      
}

2. doLast(执行时加载)和doFirst(配置时加载)

task hello{
	doLast{
		println "I\'m this last"
	}
	doFirst{
		println "I\'m this first"
	}
}

3. tasks

所有的task都存在一个TaskContainer容器中,是Project的属性。可创建task来查看

task showTask{
	println tasks.class
	println tasks.size()
}

------------------------------------------------
class org.gradle.api.internal.tasks.DefaultTaskContainer_Decorated
3

4. create

可通过TaskContainer的创建方法来构造task

tasks.create(name:\'createTask\') {
	println "i create my task..."
}

5.dependsOn

task之间的依赖

tasks.create(name:\'createTask\',dependsOn:\'hello\') {
	println "i create my task..."
}

   [taskname].dependsOn [taskname]

6.task的属性(Properties)定义

  每个task有两个默认的属性 description和 logger,

  特定Task会有额外的一些属性(例:Copy有from和to属性)。

  使用ext自定义properties

task hello{
	doLast{
			println hell
			println hell2
	}
}
hello {
	ext.hell = "Hell........"
	ext.hell2 = "Hell2...."
	description = "description is default\'s Properties"
}

 

2.自定义task:

  @Optional:表示定义项可选

  @TaskAction 表示task要执行的过程

class MyDefineTask extends DefaultTask{

	@Optional
	String message;
	
	@TaskAction
	def hello(){
		println "my defined message:   $message "
	}
}

task helloMy(type: MyDefineTask){
	message = "hello world.."
}

task DefineHello(type: MyDefineTask){
	message = " my defined...."
}

 

 

3. Project:

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

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

1. 自定义Properties(使用ext):

ext{
	pro1="I\'m defined pro1"
}

或

ext.pro2 = "I\'m defined pro2"


println pro2

 

 4. Closure And Action

 Closure(闭包)是一段单独的代码块,它可以接收参数,返回值,也可以被赋值给变量。即将一段代码段赋值给一个变量,

可以在调用的地方被使用。<< (Closure) 在gradle5.0已经不被使用,Action代替。

Closure cl = { task -> println "I\'m $task.project.name"}
task hello2 << cl
project(\':MavenCore\') {
    task hello2 << cl
}
project(\':MavenView\') {
    task hello2 << cl
}

 

Closure cl = {task -> println "I\'m $task.project.name"}
task hello2{doLast cl}

 Action指一段代码段 ,一个Task由多个Action组成。

 

以上是关于Gradle 语法的主要内容,如果未能解决你的问题,请参考以下文章

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误

Gradle / Groovy 语法和关键字

Gradle入门之Groovy语法

Gradle语法之再解闭包

Gradle入门--Groovy常用语法

如何使用模块化代码片段中的LeakCanary检测内存泄漏?