java方式实现自定义plugin

接前文 gradle自定义plugin的几种方式 属于 groovy语言实现。这次记录java实现的方式

新建java porject在build.gradle接入插件

1
2
apply plugin: 'java-gradle-plugin'
apply plugin: 'maven-publish'

依赖

1
2
3
dependencies {
implementation "com.android.tools.build:gradle:4.1.3"
}

声明插件实现

1
2
3
4
5
6
7
8
9
gradlePlugin {
plugins {
shadow {
           id = "shadow.plugin"//别的工程通过apply plugin引入的id
           //继承自Plugin的class,入口类
           implementationClass = "fu.wanke.plugin.MyClass"
       }
}
}

本地发布

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
publishing {
repositories {
maven {
// $rootDir 表示你项目的根目录
// 这里配置发布到的本地目录
url = "$rootDir/repo"
}
}

publications {
maven(MavenPublication) {

// 插件的组ID,建议设置为插件的包名
groupId = 'fu.wanke.plugin'
// 插件的名字,后续在引用时会用到
artifactId = 'shadPlugin'
version = '1.0.0'
// 组件类型
from components.java
}
}
}

配置完成通过命令 ./gradlew publish 即可发布插件到本地仓库

使用:

  1. 项目根目录的build.gradle文件引入本地仓库:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
buildscript {
repositories {
google()
jcenter()

maven {// 添加Maven的本地依赖
url uri('./repo')
}
}
dependencies {
  //我们自定义的插件
       classpath "fu.wanke.plugin:shadPlugin:1.0.0"

classpath "com.android.tools.build:gradle:4.1.3"

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
  1. 在项目的build.gradle文件里面引入插件
    1
    apply plugin: 'shadow.plugin'