自定義Gradle外掛(一)
阿新 • • 發佈:2018-12-30
Google已經建議Android開發全部轉向Android Studio開發,Android Studio 是使用gradle編譯、打包的,那麼問題來了,gradle可是有一堆東西...,為了測底瞭解gradle,今天就來學習下如何寫自己的gradle外掛(當然外掛原始碼是使用groovy寫的),先看如下程式碼目錄:
如上圖所示,plugin目錄是外掛原始碼目錄,sample是用來測試外掛的。
1、在目錄plugin/src/main/groovy/com/micky/gradle/下新建外掛類MyCustomPlugin.groovy
package com.micky.gradle; import org.gradle.api.*; class MyCustomPlugin implements Plugin<Project> { void apply(Project project) { project.task('myTask') << { println "Hi this is micky's plugin" } } }
看看Plugin的原始碼,其實就是一介面
public interface Plugin<T> {
/**
* Apply this plugin to the given target object.
*
* @param target The target object
*/
void apply(T target);
}
2、在目錄plugin/src/main/resources/META-INF/gradle-plugins/下建立檔案com.micky.mycustom.properties用來指定外掛實現類
implementation-class=com.micky.gradle.MyCustomPlugin
特別注意下:檔名“com.micky.mycustom”即是以後我們在使用外掛時的apply plugin 'java' 的java,這裡我也是折騰了半天才得出的結果,坑啊。
3、一般情況下,我們還需要指定外掛專案名稱,在plugin目錄下新建settings.gradle
rootProject.name='gradle-micky'
4、萬事具備,就差編譯了,編譯需要在plugin目錄下新建build.gradle
在這個腳本里使用groovy外掛編譯groovy原始碼,宣告gradleAPI作為即時編譯依賴,apply plugin: 'maven' 是用來建立一個外掛jar檔案並且儲存在本地maven庫裡,本地maven庫即我們在腳本里建立的"../repo"目錄apply plugin: 'groovy' apply plugin: 'maven' dependencies { compile gradleApi() compile localGroovy() } repositories { mavenCentral() } group='com.micky' version='1.0.0' uploadArchives { repositories { mavenDeployer { repository(url: uri('../repo')) } } }
執行命令: gradle uploadArchives
5、以上4個步驟已經編譯外掛並上傳到了本地庫中,接下來就看看怎麼使用外掛,在sample目錄下,新建build.gradle
buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'com.micky',
name: 'gradle-micky',
version: '1.0.0'
}
}
apply plugin: 'com.micky.mycustom'
6、執行命令
myTask即我們在MyCustomPlugin.groovy程式碼中建立的任務,下一編我們將來自定義Gradle 的Task。
原始碼地址:https://github.com/mickyliu945/GradleCustomPlugin