规划网站开发总体方案,找小程序,帮做钓鱼网站会怎样,wordpress斜杠1. 前言
本文介绍在Android中#xff0c;如何基于Gradle 8.2#xff0c;创建Gradle插件。
1.1 本文环境
Android Studio 版本 : Android Studio Hedgehog | 2023.1.1Gralde版本 : gradle 8.2 使用 Android Gradle 插件升级助理 Android Gradle 插件版本说明 1.2 为什么要写…1. 前言
本文介绍在Android中如何基于Gradle 8.2创建Gradle插件。
1.1 本文环境
Android Studio 版本 : Android Studio Hedgehog | 2023.1.1Gralde版本 : gradle 8.2 使用 Android Gradle 插件升级助理 Android Gradle 插件版本说明 1.2 为什么要写插件
可以将相关代码抽取出来而不是耦合在build.gradle中成为通用性的插件可以在多个项目中复用。 比如com.android.application就是我们最为熟悉的Android插件。
plugins {id com.android.application
}2. 创建插件
2.1 新建项目
新建MyGradlePluginTest项目这里选择Groovy DSL。 2.2 新建Gradle插件Module
这里选择Java or Kotlin Library也可以选择Android Library
2.3 修改build.gradle
plugins {id java-gradle-plugin
}gradlePlugin {plugins {//MyTestPlugin { //这种方式也行create(MyTestPlugin) {//插件idid com.heiko.myplugin//插件的包名类名implementationClass com.heiko.myplugin.MyPlugin}}
}2.4 新建插件类
对应implementationClass中的路径新建插件类 MyPlugin
package com.heiko.myplugin;import org.gradle.api.Plugin;
import org.gradle.api.Project;class MyPlugin implements PluginProject {Overridepublic void apply(Project project) {System.out.println(这是我的第一个插件!);}
}3. 发布插件
3.1 依赖maven-publish
在build.gradle中添加maven-publish插件然后配置发布插件的信息和仓库信息。 这里的maven仓库配置的是本地的仅用作演示。实际项目中应该使用真实的maven仓库服务器更合理些。 关于maven仓库更多的操作详见我的另一篇文章 : Android Module上传到Maven仓库 及 实现同时上传到多个Maven仓库
plugins {//...省略了代码...id maven-publish
}//...省略了代码...println(原本的version: version)
println(原本的group: group)//设置group
group com.heiko.group
//设置版本号
version 1.0.0println(设置后的group: group)
println(设置后的version: version)afterEvaluate {/*这部分代码不需要配置会根据gradlePlugin中的进行生成除非使用老版本的插件依赖方式(classpath):需要指定artifactId的情况下才需要使用publications {maven(MavenPublication) {groupId groupartifactId MyPluginversion versionfrom components.java}}*/publishing {// 配置仓库地址repositories {maven {url uri(../repo)}}}
}build.gradle的完整代码如下
plugins {id java-gradle-pluginid maven-publish
}gradlePlugin {plugins {//MyTestPlugin { //这种方式也行create(MyTestPlugin) {//插件idid com.heiko.plugin.myplugin//插件的包名类名implementationClass com.heiko.myplugin.MyPlugin}}
}println(原本的version: version)
println(原本的group: group)//设置group
group com.heiko.group
//设置版本号
version 1.0.0println(设置后的group: group)
println(设置后的version: version)afterEvaluate {/*这部分代码不需要配置会根据gradlePlugin中的进行生成除非使用老版本的插件依赖方式(classpath):需要指定artifactId的情况下才需要使用publications {maven(MavenPublication) {groupId groupartifactId MyPluginversion versionfrom components.java}}*/publishing {// 配置仓库地址repositories {maven {url uri(../repo)}}}
}发布插件
这个时候点击下Sync同步下代码然后可以在右侧Gradle的Tab中找到publishing里面有publish选项我们双击它就开始执行发布插件的操作了。 上传插件成功后可以看到如下信息
4. 使用插件
4.1 添加Maven仓库
pluginManagement {repositories {//省略了其他仓库...maven {url repo}}
}4.2 依赖插件
在更目录下的build.gradle中依赖插件
plugins {id com.android.application version 8.2.0 apply false//省略了其他插件代码id com.heiko.plugin.myplugin version 1.0.0 apply false
}通常默认配置会 立马 解析resolve 并 应用apply 插件。 而 apply 设为 false, 表示 不应用插件到 根项目。目的是 提前解析 插件保持一样的版本。 4.3 应用插件
在app目录下的build.gradle中应用插件
plugins {id com.android.applicationid org.jetbrains.kotlin.android//应用插件id com.heiko.plugin.myplugin
}4.4 同步项目
点击Sync同步下项目可以看到我们的插件打印的日志了 5. 使用Groovy编写插件
上文中我们是使用java语言来编写的插件那么如果使用Groovy语言来编写插件需要怎么操作呢 ?
5.1 添加groovy插件
为了识别groovy语言我们需要在MyPlugin目录下的build.gradle中添加groovy插件
plugins {id java-gradle-plugin//添加groovy插件id groovyid maven-publish
}5.2 新建groovy目录
在和java同级别的目录下新建groovy目录groovy目录下需要和原java目录一样
5.3 新建MyPluginGroovy.groovy
在groovy目录下要把MyPlugin.java改为MyPlugin.groovy 这里我为了方便区分把名称改为了MyPluginGroovy.groovy 。
package com.heiko.myplugin;import org.gradle.api.Plugin;
import org.gradle.api.Project;class MyPluginGroovy implements PluginProject {Overridepublic void apply(Project project) {println 这是我的第一个Groovy插件!}
}
5.4 修改implementationClass
修改MyPlugin目录下的build.gradle文件中的implementationClass 修改为groovy目录下对应的插件类的包名类名注意没有文件后缀。
implementationClass com.heiko.myplugin.MyPluginGroovy完整的build.gradle文件
plugins {id java-gradle-pluginid groovyid maven-publish
}gradlePlugin {plugins {create(MyTestPlugin) {//插件idid com.heiko.plugin.myplugin//插件的包名类名implementationClass com.heiko.myplugin.MyPluginGroovy}}
}//设置group
group com.heiko.group
//设置版本号
version 1.0.1afterEvaluate {publishing {// 配置仓库地址repositories {maven {url uri(../repo)}}}
}5.5 重新发布插件
将版本号version改为1.0.1双击publish重新发布插件
5.6 依赖插件
修改项目根目录下的build.gradle将我们的com.heiko.plugin.myplugin插件版本号修改为1.0.1。 重新运行项目可以看到打印的插件日志变成了
这是我的第一个Groovy插件!6. 使用Kotlin编写插件
除了使用Java或Groovy编写插件我们还可以使用Kotlin来编写插件使用kotlin对于Android开发者来说会更友好。
6.1 添加java插件
为了识别kotlin语言我们需要在MyPlugin目录下的build.gradle中添加kotlin插件
plugins {id java-gradle-plugin//添加Kotlin插件id org.jetbrains.kotlin.jvmid maven-publish
}6.2 新建kotlin目录
在和java同级别的目录下新建kotlin目录kotlin目录下需要和原java目录一样 6.3 新建MyPluginKotlin.kt
在kotlin目录下要把MyPlugin.java改为MyPlugin.kt 这里我为了方便区分把名称改为了MyPluginKotlin.groovy 。
package com.heiko.mypluginimport org.gradle.api.Plugin
import org.gradle.api.Projectclass MyPluginKotlin : PluginProject {override fun apply(project: Project) {println(这是我的第一个Kotlin插件!)}
}6.4 修改implementationClass
修改MyPlugin目录下的build.gradle文件中的implementationClass 修改为groovy目录下对应的插件类的包名类名注意没有文件后缀。
implementationClass com.heiko.myplugin.MyPluginKotlin完整的build.gradle文件
plugins {id java-gradle-pluginid org.jetbrains.kotlin.jvmid maven-publish
}gradlePlugin {plugins {create(MyTestPlugin) {//插件idid com.heiko.plugin.myplugin//插件的包名类名implementationClass com.heiko.myplugin.MyPluginKotlin}}
}//设置group
group com.heiko.group
//设置版本号
version 1.0.2afterEvaluate {publishing {// 配置仓库地址repositories {maven {url uri(../repo)}}}
}6.5 重新发布插件
将版本号version改为1.0.2双击publish重新发布插件
6.6 依赖插件
修改项目根目录下的build.gradle将我们的com.heiko.plugin.myplugin插件版本号修改为1.0.2。 重新运行项目可以看到打印的插件日志变成了
这是我的第一个Kotlin插件!7. Android Gradle系列文章
Android Gradle 开发与应用 (一) : Gradle基础-氦客-CSDN博客 Android Gradle开发与应用 (二) : Groovy基础语法-CSDN博客 Android Gradle开发与应用 (三) : Groovy语法概念与闭包-CSDN博客 Android Gradle开发与应用 (四) : Gradle构建与生命周期-CSDN博客 Android Gradle开发与应用 (五): 基于Gradle 8.2创建Gradle插件-CSDN博客 Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用命令行创建Gradle插件-CSDN博客
8. 参考文章
Using Plugins (gradle.org) Gradle用户手册 - Gradle8.1.1中文文档 - API参考文档 - 全栈行动派 (qzxdp.cn) 编写 Gradle 插件 | Android Studio | Android Developers (google.cn) Android Gradle8.0版本新建Gradle插件 - 掘金 (juejin.cn) Gradle基础到进阶 - yechaoa的专栏 - 掘金 (juejin.cn) 【Gradle-8】Gradle插件开发指南 - 掘金 (juejin.cn) 【Gradle-9】Gradle插件发布指南 - 掘金 (juejin.cn) Gradle自定义插件实践与总结 - 掘金 (juejin.cn) 创建Gradle插件记录 - 掘金 (juejin.cn)