gradle插件開發(fā)屈扎、本地調(diào)試
1埃唯、新建一個(gè)Android Library Module,刪減其他目錄文件助隧,并創(chuàng)建groovy目錄直至如下
image.png
2筑凫、build.gradle修改成:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi()
compile localGroovy()
compile 'com.android.tools.build:gradle:3.2.0'//對(duì)應(yīng)項(xiàng)目版本
compile 'org.ow2.asm:asm:6.0'
}
repositories {
jcenter()
google()
mavenCentral()
}
3、創(chuàng)建groovy文件
import org.gradle.api.Plugin
import org.gradle.api.Project
class TestPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println("TestPlugin --> test")
}
}
4并村、使用插件
app模塊build.gradle添加
apply plugin: cn.plugin.TestPlugin
注意,不要引號(hào)滓技。
gradle插件上傳
1哩牍、創(chuàng)建module選擇Android Library。
2令漂、刪除src/main目錄下所有文件/文件夾膝昆,創(chuàng)建如下目錄和FirstPlugin.groovy文件丸边,vkel.plugin.properties文件
目錄
3、新建java文件FirstPlugin.java荚孵,實(shí)現(xiàn)Plugin妹窖,泛型為Project,實(shí)現(xiàn)apply方法收叶。改文件后綴為.groovy骄呼。
package cn.vkel.plugindemo
import org.gradle.api.Plugin
import org.gradle.api.Project
public class FirstPlugin implements Plugin<Project>{
@Override
void apply(Project project) {
project.task("testTask")<<{
println("我的第一個(gè)gradle插件")
}
}
}
4、vkel.plugin.properties
implementation-class=cn.vkel.plugindemo.FirstPlugin
5判没、插件模塊build.gradle蜓萄,發(fā)布到本項(xiàng)目中的配置
apply plugin: 'groovy'
apply plugin: 'maven'
group='cn.vkel.plugin'
version='1.0.0'
dependencies {
compile gradleApi()
compile localGroovy()
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../plugins'))
}
}
}
6、根目錄bulid.gradle
buildscript {
repositories {
google()
jcenter()
maven {
url uri('plugins')
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'cn.vkel.plugin:plugindemo:1.0.0'
}
}
7澄峰、在app模塊build.gradle中使用插件
apply plugin:"vkel.plugin"
8嫉沽、測試
終端(Terminal)輸入
gradlew testTask
打印結(jié)果
image.png
9、發(fā)布到Maven私服的配置
apply plugin: 'groovy'
apply plugin: 'maven'
repositories {
mavenCentral()
}
dependencies {
compile gradleApi()
compile localGroovy()
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://localhost:8081/repository/ComponentDemo/") {
authentication(userName: "admin", password: "admin123") //賬號(hào)俏竞,密碼
}
pom.project {
version '1.0.2'
artifactId 'plugindemo'
groupId 'cn.vkel.electrocar'
description '我的第一個(gè)gradle插件'
}
}
}
}
10绸硕、發(fā)布到j(luò)Center配置