寫 Java 代碼的時候,經(jīng)常會涉及到重復(fù)性的操作,這個時候就會想要是有這樣一個插件就好了,如果是大家都會遇到的場景,IDE 或許已經(jīng)提供了,再不然也有可能有人編寫了相關(guān)的插件。要是這個操作是你們的編碼環(huán)境特有的,那就只能自己寫工具了。所以這里來學(xué)學(xué)如何編寫 IDEA 插件,讓自己的編程環(huán)境更加強(qiáng)大,更好的進(jìn)行裝逼。
開發(fā)環(huán)境
開發(fā) IDEA 插件有以下這些依賴:
- IntelliJ IDEA Community Edition
- IntelliJ IDEA Community Edition 源碼
- Plugin DevKit 插件
- IntelliJ Platform SDK
你可能已經(jīng)安裝了 Ultimate 版本,但是你還是需要安裝 IDEA 的社區(qū)版本。因為商業(yè)版是閉源的,所以在調(diào)試時無法調(diào)試核心代碼。
社區(qū)版的安裝包里是不包含源碼的,所以我們需要手動從 github 上 clone 一份:
git clone --depth 1 git://git.jetbrains.org/idea/community.git idea
關(guān)于從源碼運(yùn)行 IDEA 的方法參考:
http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html
添加 IDEA jdk
雖然不知道原因,但是根據(jù)
http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html
,我們需要建立一個IDEA jdk來運(yùn)行插件:

除非你在 Mac 上使用官方 JDK,否則你需要手動添加/lib/tools.jar到 classpath 中。
配置 IntelliJ Platform SDK
打開File | Project Structure新建一個IntelliJ Platform SDK:

Java SDK 選擇我們剛剛建立的
IDEA jdk:

然后我們可以把下載的 IDEA 社區(qū)版源碼添加到源碼路徑中,這樣在調(diào)試時,就可以調(diào)試 IDEA 自身的代碼了:


第一個插件
我們來編寫一個最簡單的插件來學(xué)習(xí)編寫一個插件的完整步驟。
新建工程
選擇IntellJ Platform Plugin,然后 Project SDK 指定剛剛新建的 plugin sdk:

新建的插件項目:

插件根目錄下有兩個目錄src和resources。src是插件代碼目錄,resource是插件資源目錄,其中META-INF/plugin.xml是插件的描述文件,就像 Java web 項目的web.xml一樣。
plugin.xml 默認(rèn)的內(nèi)容如下:
<idea-plugin>
<id>com.your.company.unique.plugin.id</id>
<name>Plugin display name here</name>
<version>1.0</version>
<vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>
<description><![CDATA[
Enter short description for your plugin here.<br>
<em>most HTML tags may be used</em>
]]></description>
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<idea-version since-build="145.0"/>
<extensions defaultExtensionNs="com.intellij">
</extensions>
<actions>
</actions>
</idea-plugin>
新建一個 Action
插件擴(kuò)展 IDEA 最常見的方式就是在菜單欄或者工具欄中添加菜單項,用戶通過點擊菜單項來觸發(fā)插件功能。IDEA 提供了AnAction類,這個類有一個虛方法actionPerformed,這個方法會在每次菜單被點擊時調(diào)用。
新建一個自定義的 Action 有兩個步驟:
- 繼承
AnAction類,在actionPerformed方法中實現(xiàn)插件邏輯 - 注冊 action,有兩種方式,通過代碼注冊和通過
plugin.xml注冊
我們先寫一個簡單的 Action 類:
public class TextBoxes extends AnAction {
public TextBoxes() {
super("Text _Boxes");
}
public void actionPerformed(AnActionEvent event) {
Project project = event.getData(PlatformDataKeys.PROJECT);
String txt= Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon());
Messages.showMessageDialog(project, "Hello, " + txt + "!\n I am glad to see you.", "Information", Messages.getInformationIcon());
}
}
然后我們在plugin.xml中注冊這個 Action:
<actions>
<group text="_Sample Menu" description="Sample menu">
<add-to-group group-id="MainMenu" anchor="last" />
<action text="Text _Boxes" description="A test menu item" />
</group>
</actions>
這里我們新建了一個菜單組,其中 text 字符串的下劃線表示這個字母作為快捷鍵。這個菜單顯示的效果如下:

除了手動新建 Action,IDEA 還提供了快速新建的方法,在代碼目錄上點擊新建,可以看到 Action:

可以在這個面板中填寫你要新建的 Action 信息,IDEA 會幫你新建類,還有在 plugin.xml 中幫你注冊:

運(yùn)行插件
運(yùn)行插件特別簡單,和運(yùn)行普通 Java 代碼一樣,點擊運(yùn)行或者調(diào)試的按鈕,就會啟動一個新的 IDEA 實例,這個實例中插件是生效的。
點擊 Text Boxes 就可以看到插件的效果了。
- END -
最后,祝大家技術(shù)在沉淀中升華。
最新熱文
15 個優(yōu)秀開源的 Spring Boot 學(xué)習(xí)項目,一網(wǎng)打盡!
總有小驚喜
關(guān)注公眾號:「Java 知己」,每天更新Java知識哦,期待你的到來!
發(fā)送「Idea」,獲取最新Idea激活工具。
發(fā)送「Group」,加入無廣告微信Java技術(shù)群。
發(fā)送「面試」,領(lǐng)取BATJ面試資料、面試視頻攻略。
發(fā)送「玩轉(zhuǎn)算法」,領(lǐng)取《玩轉(zhuǎn)算法》系列視頻教程。
千萬不要發(fā)送「1024」…
