自定义gradle插件,三种创建方式:
- build.gradle
- buildSrc
- plugin module
build.gradle
app.build.gradle中直接编写
apply plugin: AppPlugin
class AppPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.task('AppPluginTask') {
doLast {
println "AppPluginTask"
}
}
}
}
buildSrc
- 根目录下创建文件夹buildSrc
- buildSrc下创建build.gradle
apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'maven'
sourceSets {
main {
resources {
srcDir 'src/main/resources'
}
}
}
buildscript {
ext.kotlin_version = '1.4.20'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
implementation gradleApi()
implementation localGroovy()
implementation 'com.android.tools.build:gradle:4.1.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
编译一下项目
-
创建java文件夹和resources文件夹
-
java下创建包名,然后新建类MyPlugin实现Plugin接口即可
package com.chenxuan.gradle;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
public class MyPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
System.out.println("MyPlugin");
}
}
-
resources下创建文件夹META-INF.gradle-plugins,在其下创建properties文件,properties文件名应为packagename.properties
- 修改properties文件
implementation-class=com.chenxuan.gradle.CustomPlugin
- app下build.gradle引入插件,id为插件所在包名
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'com.chenxuan.gradle'
}
plugin module
新建module,删光文件夹下所有文件,只留build.gradle
apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'maven'
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/main/resources'
}
kotlin {
srcDir 'src/main/kotlin'
}
}
}
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
implementation gradleApi()
implementation localGroovy()
implementation 'com.android.tools.build:gradle:4.1.2'
}
接下来流程和buildSrc一致,得到最终目录:
build.gradle下新增
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.chenxuan.plugin'//包名
pom.artifactId = 'custom-plugin'//id
pom.version = '1.0.0'//版本号
repository(url: uri('../repo'))
}
}
}
执行uploadArchives task,根目录下得到Repo文件夹。
根目录下build.gradle引入插件
app下build.gradle添加插件
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'com.chenxuan.plugin'
}
网友评论