idea插件开发(3)-插件开发基础

        上两篇文章主要描述了idea插件工程创建和idea插件的配置,本文继承上述两篇文章,详细描述下插件开发基础的第三块内容。也是开发具体插件功能前必须要了解的内容,否则开发过程中有可能会经常卡壳。 

因大部分配置相关的内容在前两篇文章中都已描述过了,所以本文中会着重说明下与配置相关的程序代码,配置相关内容可查看前两篇文章。

术语

  •  AST:Abstract Syntax Tree
  • UAST:Unified Abstract Syntax Tree,An abstraction layer on the different AST
  • DOM:Document Object Model
  • EDT:Event Dispatch Thread,handles all Swing events
  • EP:Extension Point
  • ES:External System,allows integrating external project management systems.
  • FBI:File Based Index,allows storing key-value information based on the project's files.
  • LVCS:Local History
  • LaF:Look and Feel,Defines the visual appearance and behavior of the user interface by use Swing
  • JPS:JetBrains Project System
  • JBR:JetBrains Runtime
  • PSI:Program Structure Interface 
  • RA:Read Action
  • WA:Write Action
  • RC:Run Configuration 
  • SSR:Structural Search and Replace,Allows searching and replacing code
  • VCS:Version Control System
  • VF:Virtual File
  • VFS:Virtual File System 

一、插件打包

        正式的插件包会有三种形式如下:

1、无依赖的jar包

        插件.jar文件与所有必需的捆绑库一起位于插件“根”文件夹下的/lib文件夹中。/lib文件夹中的所有 jar都会自动添加到类路径中:

.IntelliJIDEAx0/
└── plugins
    └── sample.jar
        ├── com/company/sample/SamplePluginService.class
        │   ...
        │   ...
        └── META-INF
            ├── plugin.xml
            ├── pluginIcon.svg
            └── pluginIcon_dark.svg

2、有依赖的jar包

        插件.jar文件与所有必需的捆绑库一起位于插件“根”文件夹下的/lib文件夹中。/lib文件夹中的所有 jar都会自动添加到类路径中:

.IntelliJIDEAx0/
└── plugins
    └── sample
        └── lib
            ├── lib_foo.jar
            ├── lib_bar.jar
            │   ...
            │   ...
            └── sample.jar
                ├── com/company/sample/SamplePluginService.class
                │   ...
                │   ...
                └── META-INF
                    ├── plugin.xml
                    ├── pluginIcon.svg
                    └── pluginIcon_dark.svg

3、包含源码的jar包

        这种形式主要是为了其它人扩展用,比如定义两个模块API和Implement,需要把API公开时,这样就可以打包在一起供其它人来引用,配置在build.gradle中进行配置:

tasks {
  val createOpenApiSourceJar by registering(Jar::class) {
    // Java sources
    from(sourceSets.main.get().java) {
      include("**/com/example/plugin/openapi/**/*.java")
    }
    destinationDirectory.set(layout.buildDirectory.dir("libs"))
    archiveClassifier.set("src")
  }

  buildPlugin {
    dependsOn(createOpenApiSourceJar)
    from(createOpenApiSourceJar) { into("lib/src") }
  }
}

        上述配置将创建一个源JAR,其中包含com.example.plugin.openapi包中的Java文件,并将其添加到所需 example-plugin.zip 中的最终插件 ZIP 分发中!/example-plugin /lib /src目录。

二、依赖管理

 1、插件依赖

        一个插件可能依赖于其他插件的类,这些插件可能是捆绑的、第三方的或同一作者的。设置其他插件或模块的类的依赖,需要三个必需步骤:1、找到插件 ID;2、项目设置;3、plugin.xml中的声明

找到插件id

  1. JetBrains 市场上提供的可扩展插件

        对于在JetBrains Marketplace上发布的插件:可以打开插件的详细信息页面,然后向下滚动到底部的附加信息部分,最后复制插件 ID;

     2、Jetllij IDE捆绑的可扩展插件

        常见的插件如下,也可以在build.gradle文件中配置一个listBundledPlugins功能task列出插件列表。

Plugin Name

Plugin ID

Related Documentation

Copyright

com.intellij.copyright

CSS

com.intellij.css

WebStorm Plugin Development

Database Tools and SQL

com.intellij.database

你可能感兴趣的:(Idea插件开发,intellij-idea,java,ide)