Android Plugin DSL Reference 参考文档 :
在插件模块中的 src/main 目录 下创建 groovy 目录 , 用于存放 Groovy 代码 , 在其中定义包名以及包名下的源码 :
代码示例如下 :
package kim.hsl.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class Plugin4 implements Plugin<Project> {
@Override
void apply(Project project) {
println 'Plugin4'
}
}
注意 : 此时的 自定义 Gradle 插件是无法在其它 Module 中引入的 ;
如果想要引入该插件 , 需要将该插件上传到 远程仓库 或者 本地仓库 中 , 才能通过 在 Android 工程的根目录下的 build.gradle 构建脚本 中使用该 自定义 Gradle 插件 ;
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.2.1"
}
}
如果想要将 插件上传到 远程仓库 或者 本地仓库 中 , 需要引入一个 maven-publish 插件 ;
// 用于将 插件上传到 远程仓库 或者 本地仓库 中
apply plugin: 'maven-publish'
然后 , 创建 publishing 扩展 , 在该扩展中 , 可以在其中的 publications 脚本块 中为插件传入参数 ; 注意 : publications 中的 plugin 函数是任意命名的 ;
// 发布到 远程/本地仓库 相关配置
publishing {
publications {
// plugin 函数是随意命名的函数
plugin(MavenPublication) {
// 配置上传内容
// components.java 是打包的 jar 包
from components.java
}
}
}
在 Android Studio 工程根目录中的 build.gradle 构建脚本中 , 引入插件代码如下 :
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:4.2.1"
}
}
引入自定义 Gradle 插件的 “com.android.tools.build:gradle:4.2.1” 代码中
上述 3 个元素使用 " : " 英文冒号 隔开 ;
因此 , 在自定义 Gradle 插件模块中 , 也可以指定
通过 Project#setGroup 方法 , 指定 Gradle 插件分组 ;
// 指定自定义 Gradle 插件的分组
group 'kim.hsl.plugin'
通过 Project#setVersion 方法 , 指定 Gradle 插件的版本号
// 指定自定义 Gradle 插件的版本号
version '0.1'
自定义 Gradle 插件的名称 , 默认为工程名 , 也可以在 publishing / publications / xxx / artifactId 配置中 自己指定 插件名称 ;
// 用于将 插件上传到 远程仓库 或者 本地仓库 中
apply plugin: 'maven-publish'
// 发布到 远程/本地仓库 相关配置
publishing {
publications {
// plugin 函数是随意命名的函数
plugin(MavenPublication) {
// 配置上传内容
// components.java 是打包的 jar 包
from components.java
// 指定自定义 Gradle 插件名称
artifactId 'plugin'
}
}
}
相关代码如下 :
// 指定自定义 Gradle 插件的分组
group 'kim.hsl.plugin'
// 指定自定义 Gradle 插件的版本号
version '0.1'
// 自定义 Gradle 插件的名称 , 默认为工程名
// 也可以在 publishing / publications 脚本块中 自己指定
// 用于将 插件上传到 远程仓库 或者 本地仓库 中
apply plugin: 'maven-publish'
// 发布到 远程/本地仓库 相关配置
publishing {
publications {
// plugin 函数是随意命名的函数
plugin(MavenPublication) {
// 配置上传内容
// components.java 是打包的 jar 包
from components.java
// 指定自定义 Gradle 插件名称
artifactId 'plugin'
}
}
}
完整的 自定义 Gradle 插件的 build.gradle 构建脚本如下 :
plugins {
id 'java-library'
id 'kotlin'
id 'groovy'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation gradleApi()
implementation localGroovy()
implementation fileTree(dir: 'libs', includes: ['*.jar'])
}
// 指定自定义 Gradle 插件的分组
group 'kim.hsl.plugin'
// 指定自定义 Gradle 插件的版本号
version '0.1'
// 自定义 Gradle 插件的名称 , 默认为工程名
// 也可以在 publishing / publications 脚本块中 自己指定
// 用于将 插件上传到 远程仓库 或者 本地仓库 中
apply plugin: 'maven-publish'
// 发布到 远程/本地仓库 相关配置
publishing {
publications {
// plugin 函数是随意命名的函数
plugin(MavenPublication) {
// 配置上传内容
// components.java 是打包的 jar 包
from components.java
// 指定自定义 Gradle 插件名称
artifacts 'plugin'
}
}
}