文章

Gradle-plugin创建并发布到 maven 库

在研究 Robust 框架过程中回忆了一下 gradle-plugin 的发布流程,以及发布到本地 maven 仓库的过程,从网上搜了很多文章发现无法直接使用,有些分享都过时了没有更新导致无法使用,不知道是不是大家现在越来越过于依赖 ai,分享的知识都是很大很深度的技术内容,其实日常工作更多的是关注细节和直接拿来实践的知识。希望能持续坚持记录和分享这些技术。

开发环境

  • jdk 1.8
  • gradle 4.0.2
  • gradle wrapper gradle-6.1.1-all

  • macos

1.创建 module,保留 build.gradle 以及 main 下 java 与 resource 目录

2.build.gradle 设置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
plugins {
    id 'java-gradle-plugin'
    id 'maven-publish'
}
dependencies {
    implementation gradleApi()
    implementation 'com.android.tools.build:gradle:4.0.2'
}
group = 'com.snote.gradle.plugin'
version = '1.0.0'
gradlePlugin {
    plugins {
        myPlugin {
            id = 'com.hoolai.gradle.plugin'
            implementationClass = 'com.snote.plugin.MyPlugin'
        }
    }
}
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            groupId = project.group
            artifactId = 'snote-gradle-plugin'
            version = project.version
        }
    }
    repositories {
        maven {
            name = 'localRepo'
            url = layout.buildDirectory.dir("repo")
        }
    }
}
  1. 创建自定义 Gradle 插件类实现 Plugin
1
2
3
4
5
6
public class MyPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {
        System.out.println("==============apply==============");
    }
}
  1. 创建META-INF/gradle-plugins 文件夹,创建插件的 $grupId.properties,里面指向插件类
1
implementation-class=com.snote.plugin.MyPlugin
  1. 插件发布成功后按照下面流程测试
  2. 使用方式
    1. 在项目根目录build.gradle dependencies{…}中引入插件
1
2
3
4
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.2'
        classpath 'com.snote.gradle.plugin:hoolai-gradle-plugin:1.0.0'
    }
  1. 在需要使用的主 module 中引入即可
1
2
3
    apply plugin:'com.android.application'
    apply plugin:'maven'
    apply plugin:'com.snote.gradle.plugin'
本文由作者按照 CC BY 4.0 进行授权