這裡以列印“Hello IDEA Plugin”為例,介紹IDEA插件開發的基本要點
一.建立工程
1.IDEA建立插件可以使用 Gradle 和 Plugin DevKit兩種方式建立插件,效果都是一樣的,這裡以DevKit建立為例
new > project > 選擇IntelliJ Platform Plugin > Next > Finish
2.建立Anction
new > Plugin DevKit> Action > 填寫Action Id等基本資訊
這裡的ActionGroup是指Action需要綁定到 UI 元件位置,這裡以綁定到幫助菜單的最下面為例
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");
}
}
效果如圖所示(這裡用的是自定義工具視窗,不用關心具體實作,後期章節會講述,這裡隻需要了解開發的流程即可)
二.項目結構
.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 詳細介紹