Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、在 Java or Kotlin Library 模块中定义插件



在插件模块中的 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 中引入的 ;





二、引入自定义 Gradle 插件模块



如果想要引入该插件 , 需要将该插件上传到 远程仓库 或者 本地仓库 中 , 才能通过 在 android 工程的根目录下的 build.gradle 构建脚本 中使用该 自定义 Gradle 插件 ;

  • " buildscript / repositories " 中注明远程仓库或本地仓库 ;
  • " buildscript / dependencies / classpath " 配置自定义 Gradle 插件名称 ;
buildscript 
    repositories 
        google()
        mavenCentral()
    
    dependencies 
        classpath "com.android.tools.build:gradle:4.2.1"
    





三、配置自定义 Gradle 插件上传选项



如果想要将 插件上传到 远程仓库 或者 本地仓库 中 , 需要引入一个 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"
    





四、配置 Group 分组、插件名称、插件版本号



引入自定义 Gradle 插件的 “com.android.tools.build:gradle:4.2.1” 代码中

  • " com.android.tools.build " Group 分组
  • " gradle "插件名称
  • " 4.2.1 "插件的版本号

上述 3 3 3 个元素使用 " : " 英文冒号 隔开 ;


因此 , 在自定义 Gradle 插件模块中 , 也可以指定

  • Group 分组
  • 插件名称
  • 插件版本号

3 3 3 个信息 ;


通过 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 构建脚本



完整的 自定义 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'
        
    

以上是关于Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )的主要内容,如果未能解决你的问题,请参考以下文章

Android之Gradle的理解

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑤ ( 自定义插件中获定义方法 | 在插件中创建 Gradle 任务 | 代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )

Android Gradle 插件自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )