国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java使用自動化部署工具Gradle中的任務設定教程

2019-11-26 14:10:33
字體:
來源:轉載
供稿:網友

tasks
下面的代碼展示了三個Gradle task,稍后會講解這三者的不同。

 task myTask { println "Hello, World!" } task myTask { doLast { println "Hello, World!" } } task myTask << { println "Hello, World!" }

我的目的是創建一個task,當它執行的時候會打印出來”Hello, World!”。當我第一次創建task的時候,我猜測應該是這樣來寫的:

 task myTask { println "Hello, World!" }

現在,試著來執行這個myTask,在命令行輸入gradle myTask,打印如下:

 user$ gradle myTask Hello, World! :myTask UP-TO-DATE

這個task看起來起作用了。它打印了”Hello, World!”。
但是,它其實并沒有像我們期望的那樣。下面我們來看看為什么。在命令行輸入gradle tasks來查看所有可用的tasks。

 user$ gradle tasks Hello, World! :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Build Setup tasks ----------------- init - Initializes a new Gradle build. [incubating] ..........

等等,為什么”Hello, World!”打印出來了?我只是想看看有哪些可用的task,并沒有執行任何自定義的task!
原因其實很簡單,Gradle task在它的生命周期中有兩個主要的階段:配置階段 和 執行階段。
可能我的用詞不是很精確,但這的確能幫助我理解tasks。

Gradle在執行task之前都要對task先進行配置。那么問題就來了,我怎么知道我的task中,哪些代碼是在配置過程中執行的,哪些代碼是在task執行的時候運行的?答案就是,在task的最頂層的代碼就是配置代碼,比如:

 task myTask { def name = "Pavel" //<-- 這行代碼會在配置階段執行 println "Hello, World!"http:////<-- 這行代碼也將在配置階段執行 }

這就是為什么我執行gradle tasks的時候,會打印出來”Hello, World!”-因為配置代碼被執行了。但這并不是我想要的效果,我想要”Hello, World!”僅僅在我顯式的調用myTask的時候才打印出來。為了達到這個效果,最簡單的方法就是就是使用Task#doLast()方法。

 task myTask { def text = 'Hello, World!' //configure my task doLast { println text //this is executed when my task is called } }

現在,”Hello, World!”僅僅會在我執行gradle myTask的時候打印出來。Cool,現在我已經知道如何配置以及使task做正確的事情。還有一個問題,最開始的例子中,第三個task的<<符號是什么意思?

 task myTask2 << { println "Hello, World!"  }

這其實只是doLast的一個語法糖版本。它和下面的寫法效果是一樣的:

 task myTask { doLast { println 'Hello, World!' //this is executed when my task is called } }

但是,這種寫法所有的代碼都在執行部分,沒有配置部分的代碼,因此比較適合那些簡小不需要配置的task。一旦你的task需要配置,那么還是要使用doLast的版本。

語法

Gradle腳本是使用Groovy語言來寫的。Groovy的語法有點像Java,希望你能接受它。
如果你對Groovy已經很熟悉了,可以跳過這部分了。
Groovy中有一個很重要的概念你必要要弄懂

主站蜘蛛池模板: 石家庄市| 鹿泉市| 孝义市| 习水县| 五峰| 南召县| 紫阳县| 城固县| 德安县| 青阳县| 兴化市| 枣阳市| 莱芜市| 平阴县| 平顺县| 原阳县| 吉林市| 格尔木市| 秭归县| 依安县| 扎囊县| 平泉县| 临清市| 江安县| 太仓市| 平湖市| 黄浦区| 锡林浩特市| 晋州市| 蓬溪县| 吉安县| 五寨县| 措勤县| 金溪县| 镇坪县| 松阳县| 乌恰县| 邯郸市| 吴忠市| 大冶市| 当雄县|