Gradle插件
二进制插件使用
一:声明插件
buildscript {
repositories {
google()
jcenter()
}
dependencies {
//声明插件ID与版本号
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
}
}
二:应用插件
//应用插件
plugins {
id 'com.android.application'
}
三:配置插件
//配置插件
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
viewBinding {
enabled = true
}
defaultConfig {
applicationId "com.microli.demo"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
脚本插件使用
一:在根目录定义other.gradle
println("我是 插件代码")
二:在build.gradle中调用
println("我是 主工程代码")
apply from:project.rootProject.file("other.gradle")
三:运行./gradlew clean -q
我是 主工程代码
我是 插件代码
自定义简单插件
一:在build.gradle添加
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') {
doLast {
println 'Hello from the GreetingPlugin'
}
}
}
}
// Apply the plugin
apply plugin: GreetingPlugin
二:执行./gradlew -q hello
Hello from the GreetingPlugin
二进制插件开发
插件工程建立
一:建立buildSrc子工程
1:建立如何目录的子工程
2:在build.gradle中添加如下代码
// 引用groovy插件,编译插件工程中的代码
apply plugin: 'groovy'
// 声明仓库的地址
repositories {
google()
jcenter()
}
// 声明依赖的包
dependencies {
implementation gradleApi()
implementation localGroovy()
}
二:建立插件运行入口
implementation-class=com.router.demo.gradle.RouterPlugin
三:实现插件逻辑
package com.router.demo.gradle
import org.gradle.api.Plugin
import org.gradle.api.Project
class RouterPlugin implements Plugin<Project> {
//实现apply方法,注入插件的逻辑
@Override
void apply(Project project) {
println("我来自于 routerPlugin, apply from ${project.name}")
project.getExtensions().create("router", RouterExtension)
project.afterEvaluate {
RouterExtension routerExtension = project["router"]
println("用户设置的wiki路径:${routerExtension.wikiDir}")
}
}
}
参数配置
一:定义Extensition
package com.router.demo.gradle
class RouterExtension {
String wikiDir;
}
二:注册Extensition
project.getExtensions().create("router", RouterExtension)
三:使用Extensition
router {
wikiDir getRootDir().absolutePath
}
四:获取Extensition
project.afterEvaluate {
RouterExtension routerExtension = project["router"]
println("用户设置的wiki路径:${routerExtension.wikiDir}")
}
插件发布
一:在build.gradle 中添加下面的代码。
// 调用maven插件,用于发布
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
// 设置发布路径为 工程目录下面的repo文件件
repository(url: uri('../repo')) {
// 设置groupId 通常为报名
pom.groupId = 'com.router.demo'
// 设置artifactId, 为当前插件的名称
pom.artifactId = 'router-gradle-plugin'
// 设置 插件的版本号
pom.version = '1.0.0'
}
}
}
}
二:将buildSrc 拷贝出来,执行cp -rf buildSrc router-gradle-plugin
三:点击uploadArchives