前些天發了一篇關於IDEA插件開發的文章:從 0 編寫本身的第一款 IDEA 插件!感受寫的太過於簡單,因此這篇是從實戰的角度講解IDEA插件開發的流程。java
之因此叫從零單排,玩過或者看過別人玩英雄聯盟的人應該都懂,通俗來說就是一我的打怪升級的事情。git
定位賽,顧名思義就是經過一系列的戰鬥瞭解你的水平,定位賽後會給你一個段位,這樣你就能跟你水平差很少的人同場競技了,而在IDEA插件開發的定位賽中,我會經過幾個實際的例子演示一個插件的開發,經過幾個實際的例子讓玩家對於插件開發有個籠統的認識,實際例子完成後,我會從黑鐵講起,一點點的剖析IDEA插件的內涵,至於能不能升到最強王者那就看命運了。面試
囉嗦了這幾句話,那就讓咱們開始咱們的定位賽吧。spring
首先我先介紹幾個插件的名詞,這樣可以保證後邊的語境不會出現理解誤差,這裏我會進行類比,由於是插件是用java開發,而會java的人必定知道spring全家桶,因此我會拿spring裏面的概念進行類比,固然這裏不會列舉全部,會先列舉須要的部分。後端
1)Actions:這貨就跟controller相似,簡單一點來講,當用戶點擊idea的某個按鈕你本身開發的菜單時就會調用的方法。全部的action都須要繼承 com.intellij.openapi.actionSystem.AnAction 這個抽象類,實現actionPerformed方法便可,至於按鈕在什麼位置,則是有add-group相關參數進行配置,這個後邊得連載中詳細解釋。api
2)Services:這貨就跟spring普通的類有點類似,他的定義分爲兩種,分別是應用級別和工程級別,通俗一點講就是spring裏面的普通的bean,固然應用級別表明單例的Bean,工程級別則是多例的Bean(這裏不夠貼切,能夠先理解爲單例,等後邊的文章再細品)。微信
3)demo配置文件(完整代碼地址:https://gitee.com/yuanzizhenxin/PluginDemo):多線程
接下來我會拿https://gitee.com/yuanzizhenxin/PluginDemo 這個工程做爲實例,用剛介紹的東西講解這個簡單的實例,那麼,讓咱們開始實戰講解吧。架構
1)功能介紹:彈窗當前時間,並理解application級別和project級別的service的區別。app
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());
綜上看來,一個插件無非就這麼幾個東西,剩下的就交給閱讀一下源碼了,很簡單,祝各位成功!!
做者:亂來夢遊神
https://www.jianshu.com/p/c18...
推薦去個人博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
生活很美好,明天見~