gradle學習(3)-基礎認識

來源:互聯網
上載者:User
1.方法的使用


task checksum <<{        fileList('../test').each{                ant.checksum(file:file,property:"cs_$file.name")                println "$file.name CheckSum : ${ant.properties["cs_$file.name"]}"        }}task loadfile <<{        fileList('../test').each{File file->                ant.loadfile(srcFile:file,property:file.name)                println "I'm fond of $file.name"        }}File[] fileList(String dir){        file(dir).listFiles({file->file.isFile()} as FileFilter).sort()}

"->"代表賦值,有點類似 lambda文法。


{file->file.isFile()} as FileFilter


這句話是添加了一個判斷條件,對於傳過來的dir是一個檔案名稱的話,就不做處理了。


2.預設任務


defaultTasks 'clean','run'task clean <<{        println 'Default Cleaning!'}task run <<{        println 'Default Running!'}task other <<{        println "I'm  not a default task"}

預設任務就是在沒有指定任務名時,這些預設的任務會被執行


qianhuis-Mac-mini:1228 qianhui$ gradle -qDefault Cleaning!Default Running!

上面的預設了任務名,它可以識別這個時候沒有任務執行,但是它會執行預設的任務。


如果指定了任務名,看看輸出是什麼


qianhuis-Mac-mini:1228 qianhui$ gradle -q otherI'm  not a default taskqianhuis-Mac-mini:1228 qianhui$ gradle -q runDefault Running!

它就會執行它自己的,這有點像java中某個屬性的預設值,如果你賦予一個新的值,預設值就不會起作用。

在多項目的構建中,子項目可以有自己的預設任務,如果子項目沒有,會預設使用繼承父項目的預設任務。


3.使用DAG(有向非循環圖表)進行配置


gradle分設定階段和執行階段,設定階段完成後,gradle就知道所有需要被執行的任務。這樣我們就可以利用這些資訊瞭解哪些任務被執行了。下面的例子來判斷任務執行完成後,release任務是否被執行


task distribution <<{        println "We build the zip with version = $version"}task release (dependsOn :'distribution')<<{        println 'We release now'}gradle.taskGraph.whenReady {        taskGraph->        if(taskGraph.hasTask(release)){                version = '1.0'        }else {                version = '1.0-SNAPSHOT'        }}~   

輸出


qianhuis-Mac-mini:1228 qianhui$ gradle -q distributionWe build the zip with version = 1.0-SNAPSHOT


說明上面的DAG中存在release任務,說明release不會被執行。


qianhuis-Mac-mini:1228 qianhui$ gradle -q releaseWe build the zip with version = 1.0We release now


說明上面的DAG中存在release任務,說明release會被執行。

上面的代碼中需要注意的一點是whenReady,它會在任務執行前起作用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.