前些天發了一篇關於IDEA插件開發的文章:從 0 編寫自己的第一款 IDEA 插件!感覺寫的太過於簡單,所以這篇是從實戰的角度講解IDEA插件開發的流程。
之所以叫從零單排,玩過或者看過別人玩英雄聯盟的人應該都懂,通俗來講就是一個人打怪升級的事情。
定位賽,顧名思義就是通過一系列的戰斗了解你的水平,定位賽后會給你一個段位,這樣你就能跟你水平差不多的人同場競技了,而在IDEA插件開發的定位賽中,我會通過幾個實際的例子演示一個插件的開發,通過幾個實際的例子讓玩家對於插件開發有個籠統的認識,實際例子完成后,我會從黑鐵講起,一點點的剖析IDEA插件的內涵,至於能不能升到最強王者那就看命運了。
啰嗦了這幾句話,那就讓我們開始我們的定位賽吧。
1、IDEA插件名詞
首先我先介紹幾個插件的名詞,這樣能夠保證后邊的語境不會出現理解偏差,這里我會進行類比,因為是插件是用java開發,而會java的人一定知道spring全家桶,所以我會拿spring里面的概念進行類比,當然這里不會列舉所有,會先列舉需要的部分。
1)Actions:這貨就跟controller類似,簡單一點來說,當用戶點擊idea的某個按鈕你自己開發的菜單時就會調用的方法。所有的action都需要繼承 com.intellij.openapi.actionSystem.AnAction 這個抽象類,實現actionPerformed方法即可,至於按鈕在什么位置,則是有add-group相關參數進行配置,這個后邊得連載中詳細解釋。
2)Services:這貨就跟spring普通的類有點相似,他的定義分為兩種,分別是應用級別和工程級別,通俗一點講就是spring里面的普通的bean,當然應用級別代表單例的Bean,工程級別則是多例的Bean(這里不夠貼切,可以先理解為單例,等后邊的文章再細品)。
3)demo配置文件(完整代碼地址:https://gitee.com/yuanzizhenxin/PluginDemo):
2、實例開始
接下來我會拿https://gitee.com/yuanzizhenxin/PluginDemo 這個工程作為實例,用剛介紹的東西講解這個簡單的實例,那么,讓我們開始實戰講解吧。
1)功能介紹:彈窗當前時間,並理解application級別和project級別的service的區別。
2)代碼下載及IDEA開發環境配置:
首先需要下載IDEA社區版本即可,下載gradle並配置好,使用git將項目https://gitee.com/yuanzizhenxin/PluginDemo 下載到本地,使用idea打開。
3)插件演示:
A、首先整個demo的入口是plugin.xml里面的
這里參數的具體含義我會單獨的章節進行講解,先知道這是入口action的配置,他的位置是在下圖紅框處。
B、idea打開工程,等gradle初始化完成后找到下圖的按鈕,並雙擊運行,這樣就能夠運行一個新的idea,這個就是沙箱里面的idea(可以理解為一個全新的idea)。關注微信公眾號:Java技術棧,在后台回復:idea,可以獲取我整理的 N 篇最新 IDEA 干貨。
C、點擊在A步驟說明的action的位置,點擊ActionDemo,就能看到idea中間彈窗提示。
4)插件代碼講解:
這里action首先繼承了AnAction類,並重寫了actionPerformed方法,記住所有的插件action都是這樣聲明。
在action中獲取service的方法則是ServiceManager.getService(XXXX.class);或者ServiceManager.getService(anActionEvent.getProject(), XXXX.class);
彈窗則是 Messages.showMessageDialog(“內容”, "標題", Messages.getInformationIcon());
綜上看來,一個插件無非就這么幾個東西,剩下的就交給閱讀一下源碼了,很簡單,祝各位成功!!
推薦去我的博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
生活很美好,明天見~