Gradle插件學習筆記(一)

最近一直在深挖Android Gradle的學習,發現其實所謂的Android Gradle也不過就是一個gradle插件,因此若是能學好gradle的開發,咱們就能夠利用Gradle爲咱們作不少事,好比干預Android的打包,打出咱們想要地apk或者jar,再或者多渠道設置等等。java


創建插件工程

若是想實現對Gradle的開發,確定須要一個開發Gradle的工程,這個咱們能夠直接使用Android Studio便可,對於Gradle工程的創建,網上主要有兩種方式android

buildSrc

直接在AndroidStudio中創建一個文件夾buildSrc,而後添加src文件夾和build.gradle文件,以下圖所示: bash

在src文件夾中創建main/groovy ,main/resources 這時就能夠發現當前的結構有些相似Android的開發結構了。不一樣的只是將java換成了groovy,這是固然了,畢竟用groovy開發,若是對groovy還不太熟悉的同窗,能夠參考我以前的文章 Groovy基礎知識build.gradle中添加以下代碼:

apply plugin: 'groovy'
dependencies {
    compile gradleApi()
    compile localGroovy()
}
複製代碼

這樣咱們就能夠在groovy文件夾中添加對應代碼進行gradle開發了。app

java Library

第二種方式可使用新建一個Java Library的形式: maven

這裏注意是Java Library不是android的 Libraryide

咱們暫時起名glib,工程以下圖所示: 學習

這樣的工程暫時仍是不能使用的,咱們須要作一些修改。 首先是修改gradle文件:

apply plugin: 'groovy'
dependencies {
    compile gradleApi()
    compile localGroovy()
}
複製代碼

而後刪除java文件夾,創建groovy文件夾,以及resources文件夾,以下圖所示: 測試

區別

使用buildSrc能夠在該Project中的任何module中直接使用,若是使用新建的Java Library的形式,須要上傳Gradle插件到本地代碼庫,這個後面再說,因此下面的例子咱們先以buildSrc的方式進行介紹gradle

插件測試

groovy新建一個TestPlugin.groovy文件(注意後綴必定要是groovy):ui

public class TestPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        println("aaaaaa")
    }
}
複製代碼

gradle插件都須要在build.gradle中apply,如:apply plugin: 'com.android.application' 因此他須要有一個對外的名字,這就須要resources下的文件起做用了。 在resources文件夾下創建META-INF/gradle-plugins:

而後在這個文件夾下建一個 properties文件,這個文件的名字就是對外的名字,因此起的時候要慎重,咱們暫時叫 hhh.properties,名字特殊一點容易看出來。 文件內容以下:

implementation-class=TestPlugin
複製代碼

而後咱們利用Android Studio自帶的app module作個測試:

而後執行打包能夠發現輸出中:

上傳到本地倉庫

上面提到了若是使用java Library,須要上傳到本地倉庫才能引用,如今就須要介紹一下如何進行操做 首先須要修改build.gradle文件:

apply plugin: 'groovy'
apply plugin: "maven"
dependencies {
    compile gradleApi()
    compile localGroovy()
}

uploadArchives{
    repositories{
        mavenDeployer{
            repository(url:uri('../repo'))
            pom.groupId = 'com.test.plugin' // 組名
            pom.artifactId = 'test' // 插件名
            pom.version = '2.0.0' // 版本號
        }
    }
}
複製代碼

而後執行這個uploadArchives Task 這是會發現,工程下多了一個文件夾:

app module若是須要使用,須要添加依賴:

apply plugin: 'com.android.application'
apply plugin: 'hhh'
buildscript{
    repositories{
        maven{
            url uri('../repo')
        }
    }
    dependencies{
        classpath 'com.test.plugin:test:2.0.0'
    }
}

// 引用插件
apply plugin: 'fff'
複製代碼

總結

今天就暫時先寫到這裏,以後會陸陸續續增長一些關於gradle的相關知識

也歡迎關注個人公衆號,以後會推薦更多好用的組件庫。

相關文章
相關標籤/搜索