• IDEA插件开发(3)---捆绑插件 API 源


    如果插件公开了自己的 API 供其他插件使用,则值得考虑将插件的 API 源捆绑在 ZIP 分发中。

    如果第三方插件使用Gradle IntelliJ 插件并向插件添加了一个依赖项,该插件捆绑了 ZIP 分发中的源代码,则当开发人员导航到 API 类时,源代码将自动附加到插件库并在 IDE 中可见。能够看到 API 源极大地改善了开发体验,强烈建议捆绑它们。

    从 Gradle IntelliJ 插件 1.7.0 开始,可以在 IDE 中附加捆绑的插件源。

    API 源位置
    API 源 JAR 必须位于example-plugin.zip 中!插件 ZIP 分发中的/plugin /lib /src目录,例如:

    example-plugin.zip
    └── example-plugin
    └── lib
    ├── example-plugin.jar
    └── src
    └── example-plugin-api-src.jar
    插件 ZIP 可以包含多个源 JAR,并且源 JAR 名称没有严格的规则。

    定义插件 API
    通常,以下类被视为插件 API:

    扩展点及相关类

    监听器和相关类

    提供对插件数据/行为的访问的服务和实用程序

    请记住,API 应该是稳定的并且很少更改,因为每个不兼容的更改都会破坏客户端插件。还建议将插件代码组织在多个职责明确的模块中,例如:

    example-plugin-api- 包含 API 的模块

    example-plugin-impl- 一个包含插件功能代码的模块,这些代码不打算被客户端插件扩展或使用

    定义 API 的一般规则是包含可能被客户端插件代码使用的类。

    当然,更复杂的插件可能需要更细粒度的结构。请参阅Gradle IntelliJ 插件 - 使用示例。

    在 Gradle 构建脚本中捆绑 API 源
    在最简单的情况下,如果一个项目由单个模块组成,并且插件 API 明确隔离在一个包中,例如com.example.plugin.openapi,可以通过tasks在 Gradle 构建脚本部分添加以下代码段来实现包含源 JAR:

    科特林
    时髦的
    tasks {
    val createOpenApiSourceJar by registering(Jar::class) {
    // Java sources
    from(sourceSets.main.get().java) {
    include(“/com/example/plugin/openapi//.java")
    }
    // Kotlin sources
    from(kotlin.sourceSets.main.get().kotlin) {
    include("/com/example/plugin/openapi//
    .kt”)
    }
    destinationDirectory.set(layout.buildDirectory.dir(“libs”))
    archiveClassifier.set(“src”)
    }

    buildPlugin {
    dependsOn(createOpenApiSourceJar)
    from(createOpenApiSourceJar) { into(“lib/src”) }
    }
    }
    上述配置将从com.example.plugin.openapi包中创建一个包含 Java 和 Kotlin 源文件的源 JAR,并将其添加到所需的example-plugin.zip 中的最终插件 ZIP 分发中!/example-plugin /lib /src目录。

    如果你的插件是 Gradle 项目,并且没有明确的开放 API 包分离,建议将插件项目重组为 Gradle 多项目变体,并创建一个专用的开放 API 子项目,其中包含要包含在最终的所有 API 源由主插件 Gradle 项目创建的发行版。

  • 相关阅读:
    es5中构造函数的属性继承 借用父构造函数 方法继承 原型对象
    LeetCode-764. 最大加号标志【动态规划,二维数组】
    Luckysheet:一个纯前端的excel在线表格
    Django拾遗与博客项目
    肇庆学院携手泰迪智能科技部署大数据实验室
    ASP.NET Core 8 在 Windows 上各种部署模型的性能测试
    thinkphp5 加载静态资源路径与常量的方法
    对象 的属性名 在何时使用obj[‘属性名‘]
    获取虎牙直播源
    【前端面试必知】JS面试之数据结构
  • 原文地址:https://blog.csdn.net/jiangguilong2000/article/details/126061772