使用plugin DSL引用自定义gradle plugin

该文章同步更新到稀土掘金

前言

升级AndroidStudio到Chipmunk版本后,可以发现创建项目时默认使用gradle-7.3.3版本。这时查看项目根目录的build.gradle文件可以发现有了变化:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.2.1' apply false
    id 'com.android.library' version '7.2.1' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

再对比旧版本:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

通过dependencies配置插件依赖的方式改成了plugins。
当然变化不止这一点,将一些通用配置移到了settings.gradle

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "GradlePluginDemo"
include ':app'
include ':libplugin'

plugin DSL引用自定义的插件

这里以local repository的方式讲解

旧版(新版依然可以使用这个方式,自己增加buildscript即可)

在旧版的配置中,我们只需要做三个事情:

  1. 配置插件路径
  2. 增加插件依赖
// 这两步都在根目录的build.gradle的buildscript中配置
buildscript {
    repositories {
        // 1. 配置插件路径
        maven {
            url = uri('./local-plugin-repository')
        }
    }
    dependencies {
        // 2. 增加插件依赖
        classpath 'com.king.libplugin:zipPNG:1.0'
    }
}
  1. 引用插件
// 在需要使用该插件的module的build.gradle引用插件
plugins {
    id 'com.android.application'
    // 3. 引用插件
    id 'com.king.libplugin'
}

新版

  1. 在settings.gradle的pluginManagement中增加配置
pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
        // 1. 配置插件路径
        maven {
            url = uri('./local-plugin-repository')
        }
    }
    resolutionStrategy {
        eachPlugin {
            println("resolutionStrategy eachPlugin ${requested.id.namespace}")
            if (requested.id.namespace == 'com.king') {
                // 2. 增加插件依赖
                useModule("com.king.libplugin:zipPNG:${requested.version}")
            }
        }
    }
}
  1. 引用插件
// 这里跟旧版有点不同,需要配置version:因为在第一点中,会遍历子module的build.gradle的plugins中配置了以com.king开头的插件,然后使用useModule进行配置
plugins {
    id 'com.android.application'
    // 2. 引用插件
    id 'com.king.libplugin' version '1.0'
}
  1. useModule
    查看gradle api,看下useModule的解释:
void useModule​(Object notation)
Sets the implementation module to use for this plugin.
Parameters:
notation - the module to use, supports the same notations as DependencyHandler

设置引用的plugin的具体实现模块

自定义gradle plugin

  1. 新建一个java library的module,并定义plugin
public class CustomPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {
        project.getTasks().register("zipPNG", new Action<Task>() {
            @Override
            public void execute(Task task) {
                System.out.println("Hello from plugin 'com.example.plugin.customname'");
            }
        });
    }
}
  1. 配置自定义plugin和发布需要引用的插件
plugins {
    // 用于配置自定义plugin
    id 'java-gradle-plugin'
    // 用于发布插件
    id "maven-publish"
}

// 定义插件
gradlePlugin {
    plugins {
        zipPNG {
            // 唯一,用于后续作为引用该插件的标识
            id = 'com.king.libplugin'
            // 指定插件的实现类
            implementationClass = 'com.king.libplugin.CustomPlugin'
        }
    }
}

// 发布该插件
publishing {
    publications {
        mavenJava(MavenPublication) {
            // 插件的组ID,建议设置为插件的包名
            groupId = 'com.king.libplugin'
            // 插件的名字,后续在引用时会用到
            artifactId = 'zipPNG'
            // 版本号
            version = '1.0'
            // 组件类型
            from components.java
        }
    }
    // 配置插件生成路径,这里为当前目录的local-plugin-repository目录下
    repositories {
        maven {
            url uri('../local-plugin-repository')
        }
    }
}
  1. 在Gradle视图中,找到publishMavenJavaPublicationToMavenRepository点击即可在指定目录生成插件
  2. 引用方式为一二节描述的方式,两种方式都可以
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
org.springdoc.openapi-gradle-plugin 是一个基于 Gradle 构建工具的插件,用于为基于 Spring 框架的应用程序生成 OpenAPI 文档。通过使用这个插件,开发人员可以方便地将其 Spring Boot 项目转换为遵循 OpenAPI(以前称为 Swagger)规范的文档,并将它们发布到其应用程序的端点上。 该插件简化了将 OpenAPI 规范集成到 Spring Boot 项目中的流程,使开发人员可以轻松地生成、编译和定制 OpenAPI 文档。它还支持自动注解的映射,从而减少了手动配置的工作量。 org.springdoc.openapi-gradle-plugin 提供了一个易于使用DSL(领域专用语言),让开发人员可以通过 Gradle 构建文件来自定义其生成的 OpenAPI 文档。通过配置插件,开发人员可以定义文档的标题、版本、描述、联系人信息、许可证等内容,还可以选择要包含在文档中的响应码、路径、参数等信息。 使用该插件,开发人员可以更方便地将其 Spring Boot 项目的 API 文档集成到其应用程序中。它还提供了丰富的扩展性和自定义选项,使开发人员能够根据其特定的需求进行定制。 总的来说,org.springdoc.openapi-gradle-plugin 是一个非常有用的工具,可以帮助开发人员将 OpenAPI 规范集成到他们的 Spring Boot 项目中,并生成易于阅读和理解的 API 文档。它简化了这一过程,并提供了丰富的定制选项,让开发人员可以根据其需求对文档进行个性化定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值