- 首先工程中新建一个Android Module项目,类型选择Android Library
- 删除libs、src/androidTest、src/test、src/main下所有的目录,在src/main下新建groovy 和resources/META-INF/gradle-plugins目录
- 修改build.gradle文件
apply plugin: 'groovy'
apply plugin: 'maven'
sourceSets {
main {
groovy {
srcDir 'src/main/groovy'
}
resources {
srcDir 'src/main/resources'
}
}
}
dependencies {
// gradle sdk
implementation gradleApi()
// // groovy sdk
implementation localGroovy()
}
repositories {
mavenCentral()
}
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.hxg.gradle.study'
pom.artifactId = 'GradleOnePlugin'
pom.version = '1.0.0'
// maven本地仓库的目录
repository(url: uri('../BuildSrc'))
}
}
}
-
创建plugin插件
在src/main/groovy下创建 GradleOnePlugin
/**
* 这里的包名千万不能丢(你可以先建个class,然后修改后缀名为groovy),否者会出现
* Unable to load class ‘......Plugin’
* 血的教训
*/
package com.hxg.gradle.study
import org.gradle.api.Plugin
import org.gradle.api.Project
/**
* 自定义插件
*/
class GradleOnePlugin implements Plugin<Project> {
/**
* 插件被引入是需要执行的方法
* @param project 引入当前插件的project
*/
@Override
void apply(Project project) {
println 'my Plugin is =====> ' + project.name
}
}
这里的包名千万不能丢(你可以先建个class,然后修改后缀名为groovy),否者会出现 Unable to load class ‘…Plugin’
- 定义插件名称
在resources/META-INF/gradle-plugins目录下新建一个properties文件,注意该文件的命名就是你使用插件的名字
properties文件内容:
implementation-class=com.hxg.gradle.study.GradleOnePlugin
- 打包到本地Maven仓库
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.hxg.gradle.study'
pom.artifactId = 'GradleOnePlugin'
pom.version = '1.0.0'
// maven本地仓库的目录
repository(url: uri('../BuildSrc'))
}
}
}
执行task任务
生成插件
- 插件的使用
在项目的build.gradle中
buildscript {
repositories {
// maven插件目录
maven{
url uri('BuildSrc')
}
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
//使用自定义插件
classpath 'com.hxg.gradle.study:GradleOnePlugin:1.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
在module中引用
apply plugin: 'com.hxg.gradle.study'
执行gradlew clean命令