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 {
    @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'

你可能感兴趣的:(Gradle,gradle,gradle,plugin,gradle自定义插件,gradle插件)