Jetbrains IDEA 開發插件

IDEA 2023.1.2新版本開發插件,全新的版本,不同的實現,新版本開發插件跟舊版本的有些API是不一樣的,舊版本的某些API已經更新了,因此,初次開發中還是遇到挺多的坑的,記錄一下。

IDEA 2023.1.2新版本開發插件,全新的版本,不同的實現,新版本開發插件跟舊版本的有些API是不一樣的,舊版本的某些API已經更新了,因此,初次開發中還是遇到挺多的坑的,記錄一下。

https://plugins.jetbrains.com/docs/intellij/welcome.html

一、新建插件項目

官方文檔中描述的新建一個項目的步驟,描述的過程基本上就是上圖的操作了,選擇 IDE Plugin,輸入項目名稱,選擇項目路徑,填入GroupId,選擇JDK版本,新版本IDEA默認就是選擇的17版本,也只能選擇17版本。

二、項目結構

my_plugin ├── .run │ └── Run IDE with Plugin.run.xml ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── src │ └── main │ ├── kotlin │ └── resources │ └── META-INF │ ├── plugin.xml │ └── pluginIcon.svg ├── .gitignore ├── build.gradle.kts ├── gradle.properties ├── gradlew ├── gradlew.bat └── settings.gradle.kts

  • 默認的 IntelliJ 平臺 build.gradle.kts 文件(見下一節)。
  • gradle.properties 文件,包含 Gradle 構建腳本使用的屬性。
  • settings.gradle.kts 文件,包含 rootProject.name 和所需存儲庫的定義。
  • Gradle Wrapper 文件,特別是 gradle-wrapper.properties 文件,它指定了用于構建插件的 Gradle 版本。如果需要,IntelliJ IDEA Gradle 插件會下載此文件中指定的 Gradle 版本。
  • 默認 main 源集下的 META-INF 目錄包含插件配置文件和插件圖標。
  • The Run Plugin run configuration.

三、build.gradle.kts

plugins {
    id("java")
    id("org.jetbrains.kotlin.jvm") version "1.8.21"
    id("org.jetbrains.intellij") version "1.13.3"
}

group = "cn.youhaveme"
version = "1.0.0"

dependencies {
    implementation("cn.hutool:hutool-all:5.8.16")
}

repositories {
    mavenCentral()
}

// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
    version.set("2022.2.5")
    type.set("IC") // Target IDE Platform

    plugins.set(listOf(/* Plugin Dependencies */))
}

tasks {
    // Set the JVM compatibility versions
    withType<JavaCompile> {
        sourceCompatibility = "17"
        targetCompatibility = "17"
    }
    withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        kotlinOptions.jvmTarget = "17"
    }

    patchPluginXml {
        sinceBuild.set("222")
        untilBuild.set("232.*")
    }

    signPlugin {
        certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
        privateKey.set(System.getenv("PRIVATE_KEY"))
        password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
    }

    publishPlugin {
        token.set(System.getenv("PUBLISH_TOKEN"))
    }
}

四、plugin.xml

<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
  <!-- Unique identifier of the plugin. It should be FQN. It cannot be changed between the plugin versions. -->
  <id>cn.youhaveme.Comma</id>

  <!-- Public plugin name should be written in Title Case.
  Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
  <name>Comma</name>

  <!-- A displayed Vendor name or Organization ID displayed on the Plugins Page. -->
  <vendor email="peichenwan@gmail.com" url="https://comma.youhaveme.cn">YouHaveMe</vendor>

  <!-- Description of the plugin displayed on the Plugin Page and IDE Plugin Manager.
  Simple HTML elements (text formatting, paragraphs, and lists) can be added inside of <![CDATA[ ]]> tag.
  Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
  <description><![CDATA[
    This is a tool that automatically generates SQL IN statements for multi row query values.<br>
    <em>DataGrip users may prefer it.</em>
    ]]></description>

  <!-- Product and plugin compatibility requirements.
  Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
  <depends>com.intellij.modules.platform</depends>

  <!-- Extension points defined by the plugin.
  Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
  <extensions defaultExtensionNs="com.intellij">
    <notificationGroup displayType="BALLOON" id="Notice" />
  </extensions>
  <actions>
    <action id="cn.youhaveme.comma.CommaInAction" class="cn.youhaveme.comma.CommaInAction" text="CommaSQL"
      description="選中值轉IN_SQL語句" icon="/icon/comma.svg">
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
      <keyboard-shortcut keymap="$default" first-keystroke="meta alt COMMA"/>
    </action>
  </actions>
</idea-plugin>

五、實現一個事件

新建一個類,繼承AnAction類,重寫actionPerformed方法,在這個方法中開發自己的插件功能即可。

package cn.youhaveme.comma;

import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;

/**
* 插件開發
* @author youhaveme.cn
*/
public class CommaInAction extends AnAction {

    Log log = LogFactory.get();

    @Override
    public void actionPerformed(@NotNull AnActionEvent e) {
        log.info("開始插件之旅...");
    }
}

六、打包插件

這個執行完之后會在build文件夾下生成一個插件的壓縮包,這個壓縮包就是插件包,本地安裝或者上傳Jetbrains的插件市場都是可以的,插件的整體流程不復雜,真正復雜的是你的功能,多看看官方插件開發文檔,其實也就沒有想象中的那么難了。

聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 亚洲精品免费视频| 亚洲精品无码人妻无码| 精品一区二区视频在线观看| 欧美乱妇高清无乱码在线观看| 国产精品xxxx国产喷水| 中文字幕成人在线观看| 欧美日韩亚洲一区二区三区在线观看| 国产第一福利影院| 久久久久久久999| 欧美波霸影院在线观看| 啦啦啦在线观看视频直播免费| 一个人看的视频www在线| 日韩视频一区二区三区| 亚洲精品无码mv在线观看网站| 奇米影视777色| 好吊操视频在线观看| 久久夜色精品国产噜噜| 欧美精品九九99久久在免费线| 国产成人三级经典中文| 99久久精彩视频| 手机小视频在线观看| 免费h视频在线观看| 这里只有精品网| 国产精品自产拍在线观看| 久久精品人人做人人爽电影 | 国产精品一线二线三线 | 色多网站免费视频| 国产激情在线视频| 99久久国产综合精品麻豆| 成人a视频片在线观看免费| 亚洲欧美在线观看首页| 精品国产理论在线观看不卡| 国产在线视频一区二区三区| а√天堂资源官网在线8| 欧美xxxxx做受vr| 亚洲第一色在线| 痴汉电车中文字幕| 四虎最新免费观看网址| 青青草国产在线| 国产成年无码久久久久毛片| 69p69国产精品|