Gradle自定義插件編寫

Gradle 簡介

Gradle是一個基於JVM的構建工具,它提供了:

  • 像Ant一樣,通用靈活的構建工具
  • 可以切換的,基於約定的構建框架
  • 強大的多工程構建支持
  • 基於Apache Ivy的強大的依賴管理
  • 支持maven, Ivy倉庫
  • 支持傳遞性依賴管理,而不需要遠程倉庫或者是pom.xml和ivy.xml配置文件。
  • 對Ant的任務做了很好的集成
  • 基於Groovy,build腳本使用Groovy編寫
  • 有廣泛的領域模型支持構建

Gradle插件結構

自定義gradle插件時,既可以使用groovy語言,也可以使用Java或者Kotlin語言。一般我都是使用groovy語言。

自定義插件的目錄結構如下:

plugin-project
└── src
    └── main
    |   ├── groovy
    |   |   └── com
    |   |          └── package
    |   |               └── name
    |   └── resources
    |       └── META-INF
    |           └── gradle-plugins
    |_ build.gradle

由上述插件結構可知,自定義插件大致可分爲三個部分。groovy代碼目錄,resources/META-INF目錄和build.gradle配置文件。

build.gradle

apply plugin: 'groovy'
apply plugin: 'maven'

group 'com.opensource.gradle'
version '1.0.0'

dependencies {
    //gradle sdk
    implementation gradleApi()
    //groovy sdk
    implementation localGroovy()
}

META-INF/gradle-plugins

在META-INF/gradle-plugins 目錄下添加一個屬性文件,主要用來使得Gradle找到該插件。

com.opensource.MyCustomPlugin.properties

implementation-class=com.opensource.gradle.plugin.MyCustomPlugin

注: 表示插件 ID 爲 com.opensource.MyCustomPlugin 的插件所對應的實現類爲 com.opensource.gradle.plugin.MyCustomPlugin

com.opensource.MyCustomPlugin 就是其他地方 apply plugin:時使用的名稱

Groovy代碼 目錄

爲了創建Gradle插件,我們必須創建一個實現Plugin接口的類。當我們將自定義的插件應用到項目時,Gradle就會創建這個類的實例,並調用這個類的apply()方法。而project作爲該方法的參數,因此插件可以使用project的配置。下面我們在groovy目錄下創建CustomPlugin.groovy。

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

class MyCustomPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        println("apply MyCustomPlugin")
    }
}

發佈插件

只需要在build.gradle文件中添加uploadArchives task就可以將插件發佈到本地。

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: System.getenv("REPO_URL_RELEASE")) {
                    authentication(userName: System.getenv("REPO_USER_NAME"), password: System.getenv("REPO_PASSWORD"))
                }
            }
        }
    }
}

執行uA任務發佈插件到倉庫

gradle clean build uA
  • REPO_URL_RELEASE 爲maven私庫地址

  • REPO_USER_NAME 爲私庫用戶名

  • REPO_PASSWORD 爲私庫密碼

根據自己的環境信息,這裏替換爲指定的值

應用插件

在需要使用該插件的項目中的build.gradle 文件中,添加如下代碼

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