自定義Gradle Plugin

Gradle 是 Android 構建環節非常重要的一環,但並不是所有Android開發者對Gradle都足夠熟悉,因爲它在我們平時業務開發中,相對使用頻率還是較少的。 小編準備以自定義Gradle插件爲入口,帶大家一起認識一下Gradle。

自定義Gradle插件的方式

自定義Gradle的方式一共有三種: 1.直接在構建文件build.gradle中編寫Plugin,這種方法寫的Plugin無法被其他構建文件引用 2.buildSrc工程,可以在自己的工程內隨意使用,但是其他工程就無法使用 3.單獨的工程中自定義Gradle Plugin,上傳到遠端maven庫等,其他工程通過添加依賴,引用這個插件

Gradle plugin 示例

1.在build.gradle中編寫

apply plugin: DemoPlugin

class DemoPlugin implements Plugin<Project>{
    @Override
    void apply(Project target) {
       println("DemoPlugin in build.gradle")
    }
}

然後build一下,可以看到控制檯輸出的Log了。

2.在buildSrc Module中創建

首先創建一個module,名字必須爲buildSrc,選擇 Java Library。然後module中會自動生成一個java文件夾以及對應的java文件,我們需要把java文件夾刪掉,再重建一個groovy 文件夾以及groovy文件。

DemoPlugin.groovy:

package com.example

import org.gradle.api.Plugin
import org.gradle.api.Project

class DemoPlugin implements Plugin<Project>{
    @Override
    void apply(Project project){
        println("DemoPlugin in buildSrc Module")
    }
}

buildSrc Module 中的build.gradle 文件:

apply plugin: 'groovy'

dependencies {
  implementation gradleApi()
  implementation localGroovy()
}

最後在我們的app 下的 build.gradle 調用即可:

apply plugin: com.example.DemoPlugin

3.生成可供其他項目複用的插件

首先跟上一種方式一樣,創建一個Module,名字沒有要求,我們建一個 gradle-plugin:

DemoPlugin.groovy 的創建同上。

主要差異在於module中的build.gradle,主要工作是把我們的gradle插件編譯成一個jar包,放到一個地方供工程使用, 我們這裏直接放在工程的plugin_libs文件夾下:

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

group='com.example.plugin'
version='0.0.1'
archivesBaseName='gradle-plugin'

uploadArchives{
    repositories {
        mavenDeployer{
            repository(url:uri('../plugin_libs'))
        }
    }
}

然後,點擊uploadArchives生成相應的插件

可以看到對應的目錄下已經有我們構建的插件了:

接着,我們需要在我們的工程中依賴這個插件,工程根目錄的build.gradle:

buildscript {
  repositories {
      google()
      jcenter()
      maven{
          url(uri('./plugin_libs'))
      }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.example.plugin:gradle-plugin:0.0.1'
  }
}

最後,調用的時候依然是在app底下的build.gradle:

apply plugin: com.example.DemoPlugin

當然,我們可以把插件發佈到公司的倉庫,這樣其它項目也能直接依賴了。

這裏主要簡單介紹自定義Gradle插件的方法,我們後面會做一些有實際功能的插件,再給大家介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章