使用Java开发Gradle Plugin基础流程

/ 0评 / 0

使用Java开发Gradle Plugin基础流程

在Android开发的过程中,我们经常使用如下方法在项目中加入插件

app/build.gradle
//新版本
plugins {
    id 'com.jfrog.bintray' version '1.8.5'
}

//旧版本
apply plugin: 'com.android.library'

plugins{}块这种方式引入的插件来自Gradle官方插件库

使用apply plugin方式引入的插件,需要在dependencies中指定一下

//Project Root/build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "org.gradle.sample:cus:1.0.0-snapshots"
    }
}

创建项目

首先在项目中新建一个Java Module,可以使用Java或Kotlin进行开发

改造流程

1、更改build.gradle文件

plugins {
    id 'java-gradle-plugin'
}

gradlePlugin {
    plugins {
        //每个插件块的名称不影响插件配置,但需要为每个提供的插件提供唯一的名称
        testPlugin {
            //插件的id,期望唯一
            id = 'org.gradle.sample.simple-plugin'
            //插件的实现类
            implementationClass = 'org.learn.plugintest.MyClass'
            //插件名字
            displayName = 'Android Code Coverage Plugin'
            //插件描述
            description = '随便写点描述吧'
        }
    }
}

//用来指定Java打包的版本
java {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

dependencies {
    //gradle插件相关api
    implementation 'com.android.tools.build:gradle:4.1.1'
}

注意

com.android.tools.build:gradle的版本会影响接入方的Gradle版本

比如4.1.1则要求Gradle版本在6.5.0以上!!!对应关系请看官方文档

参考文档

Gradle Plugin Development Plugin

Publishing Plugins to the Gradle Plugin Portal

本地发布

因为gradle项目没法像普通的Module进行直接依赖,所以需要发布以后才能使用,本地联调阶段,其实放本地就可以了

1、更改build.gradle文件,新增本地发布插件功能

plugins {
    id 'java-gradle-plugin'
    //新增maven
    id 'maven'
}

uploadArchives {
    repositories {
        mavenDeployer {
            //设置插件的GAV参数
            pom.groupId = 'org.gradle.sample'
            pom.artifactId = 'cus'
            pom.version = '1.0.0-snapshots'
            //文件发布到下面目录
            repository(url: uri("${rootProject.projectDir}/repo"))
        }
    }
}

gradlePlugin {
    plugins {
        testPlugin {
            id = 'org.gradle.sample.simple-plugin'
            implementationClass = 'org.learn.plugintest.MyClass'
            displayName = 'Android Code Coverage Plugin'
            description = 'A gradle plugin for Android which can inspect incremental code test coverage'
        }
    }
}

dependencies {
    implementation 'com.android.tools.build:gradle:4.1.1'
}

然后执行uploadArchives命令即可在本地发布,在项目根目录的repo文件夹下

发布到gradle官方插件,可以参考Publishing Plugins to the Gradle Plugin Portal

2、使用插件

添加本地仓库

//Project Root/build.gradle
buildscript {
    repositories {
        google()
        jcenter()
        //本地仓库地址
        maven { url uri("${rootProject.projectDir}/repo") }
    }
    dependencies {
        //上面上传的地址
        classpath "org.gradle.sample:cus:1.0.0-snapshots"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

应用插件

//app/build.gradle

plugins {
    //gradlePlugin中指定的id
    id 'org.gradle.sample.simple-plugin' version '1.0.0-snapshots'
}

参考链接:

Android Gradle 插件开发入门指南(一)

gradle doc

官方文档

发表评论

您的电子邮箱地址不会被公开。