之前介紹了gradle外掛程式的開發,這次會對功能進行一部分拓展,建議沒有讀過第一篇文章的朋友,先看一下gradle外掛程式學習筆記(一)
之前的文章提到過,如何編寫乙個外掛程式,但是並不能通過外面傳遞引數進來,如果想使用一些自定義的引數可以使用extension,我們可以再建立乙個myextension.groovy
class myextension
複製**
public class testplugin implements plugin,$")}}
}複製**
project本身是支援拓展的,所以提供了create
方法,project.extensions.create("deep", myextension)
這句**的意思是將我們的自定義的類作為project的乙個屬性值,key是deep。
這裡在普及乙個小知識,專案中gradle執行的時候,會先解析setting.gradle,然後是build.gradle,如果想在解析build.gradle之前做點事,可以使用project.beforeevaluate
如果想在解析build.gradle之後做點事可以project.afterevaluate。
所以我們在解析完build.gradle之後,在訪問project中我們設定的屬性,即可得到build.gradle中設入的值。 來看個例子(其中hhh就是我們寫的外掛程式名字,這個上篇文章提到過):
deep
複製**
執行任務列印:
通過上面的例子,我想到了正經的android工程不是也是這樣配置的嗎,我們可以測試一下。 都知道android工程中的project,樣式如下:
android
}複製**
這些不都是project的乙個拓展類嗎?我們可以測試一下,修改外掛程式:
@override
project.afterevaluate
複製**
我取project下的android,然後再取android下的defaultconfig,就可以得到包名,執行一下看看:
果然可以獲取包名,同理,在打包的時候可以拿到更多的設定資訊。
Gradle學習筆記
近日學習使用androidstudio進行安卓方向的開發,對於其gradle功能一直不太理解,經過資料查詢,彙總在此以便記錄。1.gradle的來歷及意義 gradle 是新一代的自動化構建工具,它是乙個獨立的專案,跟 as android 無關。但google 在推出 as 的時候選中了 grad...
Gradle學習筆記(四)
構建指令碼 gradle構建指令碼將向你展示groovy的所有出色的功能,接下來看看它強大的功能 example 在gradle的任務 tasks 中使用groovy語言 build.gradle task upper 儲存檔案,輸入命令列 gradle q upper執行完之後將會輸出 origi...
gradle學習筆記 1
1.安裝 gradle web site 2 新增環境變數 1 變數名 gradle home 2 為path變數新增乙個值 gradle home bin 3 測試。在命令列裡輸入gradle v,若顯示一些gradle資訊,說明安裝成功。2.hello world 1 基本概率 gradle中的...