使用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'
}
参考链接: