Gradle插件开发与发布指南
目录
插件开发
创建Module
- module名必须为buildSrc
- 新建目录:buildSrc/src/main/groovy
- 新建目录:buildSrc/src/main/resources/META-INF/gradle-plugins
配置项目
groovy目录下新建包名,如com.github.mwping.plugin,包下新建插件主类:MwpPlugin.groovy:
package com.github.mwping.plugin
import com.github.mwping.plugin.utils.MwpLogger
import org.gradle.api.Plugin
import org.gradle.api.Project
class MwpPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
MwpLogger logger = new MwpLogger(project)
logger.error("apply MwpPlugin")
}
}
为了方便打印信息,增加MwpLogger.java:
package com.github.mwping.plugin.utils;
import org.gradle.api.Project;
import org.gradle.api.logging.Logger;
public class MwpLogger {
private static final char TOP_LEFT_CORNER = '┌';
private static final char BOTTOM_LEFT_CORNER = '└';
private static final char HORIZONTAL_LINE = '│';
private static final String DIVIDER = "─────────────────────────────────────────────────";
private Project project;
private Logger logger;
public MwpLogger(Project project) {
this.project = project;
logger = project.getLogger();
}
public void error(String s) {
String info = String.format("%1$s\n%2$s %3$s\n%4$s", TOP_LEFT_CORNER + DIVIDER, HORIZONTAL_LINE, s, BOTTOM_LEFT_CORNER + DIVIDER);
logger.error(info);
}
}
gradle-plugins目录下新建文件com.github.mwping.plugin.properties:
implementation-class=com.github.mwping.plugin.MwpPlugin
修改buildSrc/build.gradle文件:
apply plugin: 'groovy'
dependencies {
compile gradleApi() //gradle sdk
compile localGroovy() //groovy sdk
}
repositories {
jcenter()
}
项目整体目录如下:
调试插件
在当前项目的application类型的module(如app)的build.gradle文件添加:
apply plugin: 'com.android.application'
apply plugin: com.github.mwping.plugin.MwpPlugin // add this line
命令行输入./gradlew clean -p app查看日志:
$ ./gradlew clean -p app
> Configure project :app
┌─────────────────────────────────────────────────
│ apply MwpPlugin
└─────────────────────────────────────────────────
BUILD SUCCESSFUL in 1s
1 actionable task: 1 up-to-date
发布到本地仓库
buildSrc/build.gradle修改成:
apply plugin: 'groovy'
apply plugin: 'maven' // add this line
dependencies {
compile gradleApi() //gradle sdk
compile localGroovy() //groovy sdk
}
repositories {
jcenter()
}
// add this code
uploadArchives {
repositories.mavenDeployer {
repository(url: uri('../repo'))
pom.groupId = 'com.github.mwping'
pom.artifactId = 'plugin'
pom.version = '0.0.1'
}
}
双击执行uploadArchives:
生成如下目录:
使用:
项目根目录build.gradle添加配置:
buildscript {
repositories {
google()
jcenter()
//add this code
maven {
url uri('repo')
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.greenrobot:greendao-gradle-plugin:3.2.2"
classpath 'com.github.mwping:plugin:0.0.1'//add this line: groupId:artifactId:version
}
}
app/build.gradle修改:
apply plugin: 'com.android.application'
//apply plugin: com.github.mwping.plugin.MwpPlugin
apply plugin: 'com.github.mwping.plugin' // add this line
发布到远程仓库
参考
步骤:
1.创建账号
2.获取API Key:
3.添加API key配置:
进入目录:
$ cd ~/.gradle/
$ open .
目录下新建文件:gradle.properties:
gradle.publish.key=your-api-key
gradle.publish.secret=your-api-secret
buildSrc/build.gradle修改成:
plugins {
id "com.gradle.plugin-publish" version "0.10.0"
id "java-gradle-plugin"
}
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi() //gradle sdk
compile localGroovy() //groovy sdk
}
repositories {
jcenter()
}
version = '0.0.2'
group = "com.github.mwping"
gradlePlugin {
plugins {
mwpPlugin {
id = 'com.github.mwping.plugin'
implementationClass = 'com.github.mwping.plugin.MwpPlugin'
}
}
}
pluginBundle {
website = 'https://mwping.github.io/'
vcsUrl = 'https://github.com/mwping/TheMatrix'
description = 'Hello Gradle Plugin!'
tags = ['test', 'integration']
plugins {
mwpPlugin {
displayName = 'Mwp Study Plugin'
}
}
}
uploadArchives {
repositories.mavenDeployer {
repository(url: uri('../repo'))
pom.groupId = 'com.github.mwping'
pom.artifactId = 'plugin'
pom.version = version
}
}
双击执行publishPlugins:
执行成功之后,进入官网-个人主页,能看到插件正在审核中: