赞
踩
前文中,我们介绍了在Android
中,如何基于Gradle 8.2
,创建Gradle
插件。这篇文章,我们以buildSrc
的方式来创建Gradle
插件。此外,还介绍一种用Cmd
命令行的方式,来创建独立的Gradle
插件的方式。
Android Studio
版本 : Android Studio Iguana | 2023.2.1
Gralde
版本 : gradle 8.4
buildSrc
是一个特殊的源代码集,通常用于存放项目内部使用的自定义Gradle插件和任务。它的主要优势在于它会自动被Gradle
识别并编译,然后Android Studio
自动会将其添加到构建脚本的classpath
中,因此无需手动添加或配置。这使得在项目的多个模块之间共享构建逻辑变得非常方便。此外,由于buildSrc
是项目的一部分,因此它可以直接访问和使用项目中的其他代码和资源。
不用把
buildSrc
看成一个特别奇怪的东西,这个玩意儿就是个普通的java
项目,它运行完后,会生成一个jar
包 (buildSrc/build/libs/buildSrc.jar
),然后它会自动添加到整个项目的build.gradle.kts
脚本的classpath
里面。
相比之下,单独的Gradle
插件通常作为独立的项目来开发,并通过二进制形式(如jar包
)发布到仓库中,供其他项目使用。这种插件通常具有更广泛的适用性,因为它们设计用于多个项目之间的复用。然而,开发这种插件需要更多的配置和发布步骤,并且它们不会直接访问到使用它们的项目的内部代码和资源。
在项目的根目录下,新建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()
}
我们Sync
下项目,Android Studio
自动会将其添加到构建脚本的classpath
中。
接着我们只需要在app
的build.gradle
中,去应用这个插件就可以使用了。
plugins {
//省略了其他插件...
//应用我们自定义的com.heiko.buildsrc.plugin插件
id("com.heiko.buildsrc.plugin") apply true
}
再次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
使用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" } } }
除了在Android Studio
中手动新建插件,我们还可以通过命令行来新建插件。
首先需要新建一个文件夹,在文件夹里复制好如下内容,gralde文件夹
、gradlew
、gradlew.bat
,这三个直接从一个现成的Android
项目中复制过来就行。
打开cmd
,进入该文件夹,然后执行如下命令,下述命令选其一即可。
gradlew init --type java-gradle-plugin
gradlew init --type groovy-gradle-plugin
gradlew init --type kotlin-gradle-plugin
执行命令后,会有几个问题选项,我们按需进行选择,最终看到BUILD SUCCESSFUL
,就表示新建插件成功了
生成后的文件如下
这样子就很快的完成了一个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博客
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。