什么是gradle插件?
比方說我們任意打開一個開源的android源碼 都能在build.gradle中看到如圖所示的代碼
這些apply plugin后面跟著的就是所謂的gradle插件
gradle插件有什么用?
一開始只是為了方便編譯使用,傳不同的參數編譯出不一樣的apk包,比如所謂的debug release包 混淆和未混淆的包等等。但是現在隨著越來越多的開源框架(尤其是跟插件化 組件化 熱修復 這種大型涉及到android編譯過程的框架)復雜度提高,越來越多的框架選擇自定義gradle plugin來完成對應的需求。所以知曉甚至熟悉如何自定義gradle 插件就成為我們讀懂這些開源框架的必備技能之一
下面就簡單介紹一下自定義gradle plugin中遇到的哪些坑
首先要明確一下自定義gradle插件分為兩種
第一種:只給自己project下使用的插件。無需上傳maven。
這種情況,我們在心間module的時候一定要取名為
否則as是不認的!
然后project的settings.gradle中 不要加: 例如:
注意看buildSrc 前面是沒有冒號的
最后就是下目錄結構:
注意只有src和build.gradle 是我們編輯的 其他都是編譯以后自動生成的。目錄結構注意不要搞錯。
這種只給自己project下使用的gradle插件編寫方式非常適合自學,但是最終我們都要提供出去給別人
使用的對吧。
第二種:上傳到maven的gradle 插件。
上傳到maven的gradle 插件名字就可以隨便寫了,不像前面那種必須寫死成buildSrc 這個名字。
這是這兩者最大的區別。然后因為要上傳到maven所以我們的build.gradle自然也要修改
`apply plugin: 'groovy'
apply plugin: 'maven'
group='com.example.wuyue'
version='4.0.0'
dependencies {
compile gradleApi() //gradle sdk
compile localGroovy() //groovy sdk
}
repositories {
mavenCentral()
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('D:/repos'))
}
}
} `
可以看出來我們這里上傳到的是本地maven倉庫,注意group和version的值
然后在我們要使用這個插件的地方 也是在build.gradle中加入:
即可。注意classpath格式不要寫錯。