天天看點

(一)IDEA插件開發簡介

這裡以列印“Hello IDEA Plugin”為例,介紹IDEA插件開發的基本要點

一.建立工程

1.IDEA建立插件可以使用 Gradle 和 Plugin DevKit兩種方式建立插件,效果都是一樣的,這裡以DevKit建立為例

new > project > 選擇IntelliJ Platform Plugin > Next > Finish

(一)IDEA插件開發簡介

2.建立Anction

new > Plugin DevKit> Action > 填寫Action Id等基本資訊

這裡的ActionGroup是指Action需要綁定到 UI 元件位置,這裡以綁定到幫助菜單的最下面為例

(一)IDEA插件開發簡介

Action Group 詳情參考,裡面有較長的描述

3.列印 “Hello IDEA Plugin”,在actionPerformed()函數中編寫列印邏輯,DevKit 模式下插件的運作和日常的編碼調試是一樣的,直接點選運作即可。

public class HelloIdeaPlugin extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        Application.project = e.getProject();
        new Console().print("Hello IDEA  Plugin");
    }
}
           

效果如圖所示(這裡用的是自定義工具視窗,不用關心具體實作,後期章節會講述,這裡隻需要了解開發的流程即可)

(一)IDEA插件開發簡介

二.項目結構

.HelloIDEA/
└── src/main/com/yatoufang/...
					│	...
    				└── Test.class
└── recurse/ 
		└────────── Pictures/(其他資源)
        └── META-INF
            ├── plugin.xml(工程配置檔案)
            ├── pluginIcon.svg(插件圖示,名稱固定統一,不可修改)
            └── pluginIcon_dark.svg

           

1.plugin.xml(項目配置檔案)

plugin.xml 是整個項目的核心配置檔案,插件的一些基本資訊(插件作者)以及重要元件(Action、extentions )都在這聲明,詳細說明如下所示。

<idea-plugin>
  <!-- 插件ID,必須唯一 -->
  <id>com.yatoufang.hse.HelloIdeaPlugin</id>
  <!-- 插件名稱 -->
  <name>HelloIdeaPlugin</name>
  <!-- 插件版本,重複不能過審 -->
  <version>1.0</version>
  <!-- 作者資訊 -->
  <vendor email="email" url="url">Company</vendor>
  <!-- 插件描述 -->
  <description>description</description>
  <!-- 更新說明 -->
  <change-notes>change-notes</change-notes>
  <!-- 以上資訊會被抽取至插件市場首頁展示-->
  
  <!-- 相容最低版本 173 對應 2017.3版本-->
  <idea-version since-build="173.0"/>
  <!-- 插件依賴 -->
  <depends>com.intellij.modules.platform</depends>
  <!-- 插件擴充 -->
  <extensions defaultExtensionNs="com.intellij">
    
  </extensions>

  <actions>
    <action id="com.yatoufang.test" class="HelloIdeaPlugin" text="HelloIdeaPlugin">
      <add-to-group group-id="HelpMenu" anchor="after" relative-to-action="About"/>
      <keyboard-shortcut keymap="$default" first-keystroke="alt A"/>
    </action>
  </actions>
</idea-plugin>
           

2.Actions,Action的功能可以了解為一個入口函數,相當于Android、Js的Onclick函數,Action是調用插件功能最常用的方法

3.depends 插件依賴,許多酷炫的功能都需要引用依賴來實作,比如Class檔案解析、自定義UI主題等,下面列舉了幾個常用的依賴(引用depends 注意版本相容問題)

依賴名稱 功能
com.intellij.modules.platform 消息傳遞,UI主題,UI元件,檔案、文檔讀寫
com.intellij.modules.lang 檔案解析,代碼高亮顯示,代碼查找、去重、導航
com.intellij.modules.platform 檔案狀态,更改清單,檔案曆史記錄,注釋

4.extensions 插件服務、部分UI元件需要在extensions 中申明,相當于一個配置項子產品

三.經驗分享

1.熟讀官方文檔,插件開發之前至少要過一遍官方文檔,對每個子產品有個大緻印象

2.閱讀源碼,個人覺得官方文檔内容上有點粗糙,很多地方描述的很簡單,并且沒有詳細的示例代碼,網上也沒有使用示例,這時候就隻能靠源碼了。

3.使用官方社群替代搜尋引擎,因為大多數搜尋引擎的搜尋結果都來自官方社群,筆者幾個卡點難題都是通過官方社群解決的

相關連結

官方文檔

官方社群

Action Group 詳細介紹

繼續閱讀