經過上兩篇文章,咱們大概知道了Groovy,Gradle在Android項目構建中的一些基本的配置和其做用,接下來就是咱們真正實踐的時刻,咱們經過一個簡單的插件的實現,來將前兩篇中的點串起來,再次回顧熟悉Groovy語言,經過一個簡單的demo跑通這個插件實現流程。建立一個插件,併發布到本地maven倉庫。而後在咱們的項目中運用咱們的插件,調用相關的task。java
以前在本身學習gradle的時候,網上的資料自己相對較少,再就有些博主略過了一些細節,致使了不少博客中給出的例子,當咱們本身實際去實踐的時候,本身反倒沒法跑起來,這裏對於建立一個簡單的gradle插件,進行了步驟的切分,對於每個步驟進行較爲詳細的講解。android
在Gradle文件中,咱們能夠根據本身的需求寫一些task,其後的參數爲task指定相應的名稱api
task("Test") {
println("Hello world")
}
複製代碼
在Build文件中,咱們能夠實現一個簡單的Gradle插件,經過實現Plugin
接口,並實現其apply方法,這裏在apply方法中打印出一個Hello world
。bash
class MyPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
println("Hello world")
}
}
複製代碼
在Build文件中寫,顯然沒法讓其複用,若是複用,咱們就須要將其獨立出來,如何來將其寫成一個獨立的插件呢?咱們能夠經過AndroidStudio來進行插件的開發,可是因爲AndroidStudio沒有給予很好的支持,所以,可能須要咱們去手動的刪除一些文件,而後按照正常的插件目錄從新創建項目。併發
這裏,咱們新建一個Module,並取名firstplugin。app
將Java文件名稱改成groovy (由於,咱們的demo項目中不須要Java代碼,所以,能夠將其替換爲groovy。)。刪除libs目錄maven
原build文件ide
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
複製代碼
由於咱們要支持對於Groovy的編譯支持,因此要添加一些Groovy相關的內容。學習
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi()
compile localGroovy()
}
repositories {
mavenCentral()
}
複製代碼
執行build文件後,咱們在進行開發的時候,就能夠進行自動提示幫助咱們提高開發效率。gradle
創建Groovy文件,進行插件代碼的開發。這裏咱們命名爲FirstPlugin .
package com.example;
import org.gradle.api.Plugin
import org.gradle.api.Project
class FirstPlugin implements Plugin<Project> {
@Override
void apply(Project target) {
target.task("TestTask") {
println("Hello world")
}
}
}
複製代碼
在Src目錄下添加resources
文件夾,建立一級目錄,META-INF
,在其下建立二級目錄,grale-plugins
,而後建立一個文件。命名方式,插件名稱+properties後綴。
這裏咱們的文件名是com.example.firstplugin.properties
implementation-class=com.example.FirstPlugin
複製代碼
裏面用來指定咱們的插件實現類。
在Build文件中添加傳至本地mavenCentral的代碼
//根據本身需求來配置
group = 'com.jensen.plugin'
//版本信息
version = '1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//本地倉庫地址
repository(url: uri('/Users/chenjensen/Desktop/repo'))
}
}
}
複製代碼
在Gradle task中執行uploadArchives
,便可看到在本地的repo中產生的依賴。
在Project的build文件中添加
repositories {
jcenter()
//配置maven地址
maven {
url uri('/Users/chenjensen/Desktop/repo')
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
//指定插件的路徑
classpath 'com.jensen.plugin:firstplugin:1.0.0'
}
複製代碼
在咱們的app的project中應用咱們的插件
apply plugin: 'com.example.firstplugin'
TestTask
複製代碼
執行控制檯打印出執行信息.
Hello world
複製代碼
經過這一個流程,咱們能夠寫出來一個簡單的Gradle插件,對於具體更深刻的功能,咱們能夠本身來根據本身的需求定製本身的插件,去寫相應的task。經過本篇,主要是熟悉流程,接下來的第四篇,將會着重於如何寫一個功能更豐富的插件,併發布到Jcenter中,應用到咱們的項目之中。