论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
Android Gradle 开发与应用 (六) : 创建buildSrc插件和 ...
Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用下令行创建Gradl ...
天空闲话
金牌会员
|
2024-6-29 07:29:09
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
642
|
帖子
642
|
积分
1926
1. 媒介
前文中,我们先容了在Android中,怎样基于Gradle 8.2,创建Gradle插件。这篇文章,我们以buildSrc的方式来创建Gradle插件。别的,还先容一种用Cmd下令行的方式,来创建独立的Gradle插件的方式。
1.1 本文情况
Android Studio 版本 : Android Studio Iguana | 2023.2.1
Gralde版本 : gradle 8.4
2. buildSrc插件
buildSrc是一个特殊的源代码集,通常用于存放项目内部使用的自定义Gradle插件和任务。它的主要优势在于它会自动被Gradle识别并编译,然后Android Studio自动会将其添加到构建脚本的classpath中,因此无需手动添加或配置。这使得在项目的多个模块之间共享构建逻辑变得非常方便。别的,由于buildSrc是项目的一部分,因此它可以直接访问和使用项目中的其他代码和资源。
不消把buildSrc看成一个特别希奇的东西,这个玩意儿就是个平凡的java项目,它运行完后,会生成一个jar包 (buildSrc/build/libs/buildSrc.jar),然后它会自动添加到整个项目的build.gradle.kts脚本的classpath内里。
2.1 buildSrc插件和独立Gradle插件的区别
相比之下,单独的Gradle插件通常作为独立的项目来开发,并通过二进制形式(如jar包)发布到堆栈中,供其他项目使用。这种插件通常具有更广泛的适用性,因为它们计划用于多个项目之间的复用。然而,开发这种插件必要更多的配置和发布步骤,而且它们不会直接访问到使用它们的项目的内部代码和资源。
2.2 新建buildSrc目次
在项目的根目次下,新建buildSrc文件夹,并添加如下的项目结构
buildSrc目次下的build.gradle中写下如下的内容
plugins {
id 'java-gradle-plugin'
}
gradlePlugin {
plugins {
greeting {
id = 'com.heiko.buildsrc.plugin' //这里是插件的ID
implementationClass = 'com.heiko.buildsrc.MyPlugin' //这里是包名+类名
}
}
}
复制代码
这里必要留意
Plugin用java语言编写,那么包名的上一级为java文件夹,plugin用java-gradle-plugin
plugins {
id 'java-gradle-plugin'
}
复制代码
Plugin用groovy语言编写,那么包名的上一级为groovy文件夹plugin用groovy
plugins {
id 'groovy'
}
复制代码
Plugin用kotlin语言编写,那么包名的上一级为kotlin文件夹,plugin用org.gradle.kotlin.kotlin-dsl
plugins {
id("org.gradle.kotlin.kotlin-dsl") version "4.1.2"
}
使用 kotlin-dsl 插件的时候,需要mavenCentral仓库
repositories {
mavenCentral()
}
复制代码
2.3 依赖插件
我们Sync下项目,Android Studio自动会将其添加到构建脚本的classpath中。
接着我们只必要在app的build.gradle中,去应用这个插件就可以使用了。
plugins {
//省略了其他插件...
//应用我们自定义的com.heiko.buildsrc.plugin插件
id("com.heiko.buildsrc.plugin") apply true
}
复制代码
2.4 查看日记
再次Sync下项目,可以看到如下日记,就表明我们配置buildSrc插件成功了 !
//...省略了其他日志 ...
> Configure project :app
这是我的第一个Gradle插件:MyPlugin.apply!
> Task :prepareKotlinBuildScriptModel UP-TO-DATE
greeting config
//...省略了其他日志 ...
BUILD SUCCESSFUL in 14s
4 actionable tasks: 2 executed, 2 up-to-date
复制代码
3.使用build.gradle.kts来新建buildSrc插件
使用build.gradle.kts和使用build.gradle根本是一样的,只必要将build.gradle修改为build.gradle.kts,然后将内里的代码从Groovy修改为Kotlin即可
plugins {
//Plugin用Java语言编写时需添加
`java-gradle-plugin` //等同于 id("java-gradle-plugin") apply true
//Plugin用Groovy语言编写时需添加
`groovy` //等同于 id("groovy") apply true
//Plugin用Kotlin语言编写时需添加
`kotlin-dsl` //等同于 id("org.gradle.kotlin.kotlin-dsl") version "4.1.2"
// 也可以用 id("org.jetbrains.kotlin.jvm") version "1.9.10" apply true (不建议,这个只有Kotlin的语法,而没有Kotlin DSL的语法)
}
//使用 kotlin-dsl / org.jetbrains.kotlin.jvm 的时候,需要mavenCentral仓库
repositories {
mavenCentral()
}
gradlePlugin {
plugins {
create("greeting") {
id = "com.heiko.buildsrc.plugin"
//Java插件主类
//implementationClass = "com.heiko.buildsrc.MyPlugin"
//Groovy插件主类
//implementationClass = "com.heiko.buildsrc.MyPluginGroovy"
//Kotlin插件主类
implementationClass = "com.heiko.buildsrc.MyPluginKotlin"
}
}
}
复制代码
4. 更方便的新建插件的方式 : 下令行
除了在Android Studio中手动新建插件,我们还可以通过下令行来新建插件。
4.1 新建文件夹
首先必要新建一个文件夹,在文件夹里复制好如下内容,gralde文件夹、gradlew、gradlew.bat,这三个直接从一个现成的Android项目中复制过来就行。
4.2 运行下令行
打开cmd,进入该文件夹,然后实验如下下令,下述下令选其一即可。
4.2.1 创建使用Java的插件
gradlew init --type java-gradle-plugin
复制代码
4.2.2 创建使用Groovy的插件
gradlew init --type groovy-gradle-plugin
复制代码
4.2.3 创建使用Kotlin的插件
gradlew init --type kotlin-gradle-plugin
复制代码
4.3 完成选项
实验下令后,会有几个问题选项,我们按需举行选择,终极看到BUILD SUCCESSFUL,就表现新建插件成功了
生成后的文件如下
如许子就很快的完成了一个Gradle独立插件的新建了。
5. 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博客
6. 参考文章
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)
配置 build | Android Studio | Android Developers (google.cn)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
天空闲话
金牌会员
这个人很懒什么都没写!
楼主热帖
css过渡样式
Mysql终端Terminal操作
Cesium 案例(一) Z-Indexing Geometr ...
【数据库】数据库课程设计一一疫苗接种 ...
如何精简 Prometheus 的指标和存储占用 ...
quarkus数据库篇之三:单应用同时操作 ...
编程能力提升系列:1. 二维矩阵的最大 ...
C语言执行过程
Java 断点下载(下载续传)服务端及客户 ...
Kubernetes(K8S) Controller - Statefu ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表