Gradle 語法

參考文章:html

Gradle學習系列之二——建立Task的多種方法(http://www.cnblogs.com/CloudTeng/p/3417970.html)

Gradle基本知識點與經常使用配置(https://segmentfault.com/a/1190000006915937)

Gradle 中的語法

目錄segmentfault

  1. 建立task
  2. 自定義task
  3. project
  4. closure and action

1.建立task

cmd:  gradle -q [taskname]api

-q 表示不打印輸出日誌信息。即僅顯示結果。閉包

task有兩個生命週期,配置階段和執行階段post

1. <<     (追加)  *  在gradle5.0後會被去掉,建議使用doLast代替學習

  即向任務名追加執行過程。gradle

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

2. doLast(執行時加載)和doFirst(配置時加載)ui

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

3. tasksthis

全部的task都存在一個TaskContainer容器中,是Project的屬性。可建立task來查看url

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組成。

相關文章
相關標籤/搜索