開發屬於自己的第一款IDEA插件!

2020-12-23 酷扯兒

本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫

作者:木杉

http://imushan.com/

寫Java代碼的時候,經常會涉及到重複性的操作,這個時候就會想要是有這樣一個插件就好了,如果是大家都會遇到的場景,IDE或許已經提供了,再不然也有可能有人編寫了相關的插件。要是這個操作是你們的編碼環境特有的,那就只能自己寫工具了。所以這裡來學學如何編寫IDEA插件,讓自己的編程環境更加強大,更好的進行裝逼。

開發環境

開發IDEA插件有以下這些依賴:

IntelliJ IDEA Community EditionIntelliJ IDEA Community Edition 源碼Plugin DevKit 插件IntelliJ Platform SDK安裝IntelliJ IDEA Community Edition

你可能已經安裝了Ultimate版本,但是你還是需要安裝IDEA的社區版本。因為商業版是閉源的,所以在調試時無法調試核心代碼。

下載IntelliJ IDEA Community Edition源碼

社區版的安裝包裡是不包含源碼的,所以我們需要手動從github上clone一份:

git clone --depth 1 git://git.jetbrains.org/idea/community.git idea

關於從源碼運行IDEA的方法參考 Check Out And Build Community Edition:

http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html

添加IDEA jdk

雖然不知道原因,但是根據Check Out And Build Community Edition:

http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html

我們需要建立一個

IDEA jdk

來運行插件:

除非你在Mac上使用官方JDK,否則你需要手動添加

/lib/tools.jar

到classpath中。

配置IntelliJ Platform SDK

打開

File | Project Structure

新建一個

IntelliJ Platform SDK

Java SDK選擇我們剛剛建立的

IDEA jdk

然後我們可以把下載的IDEA社區版源碼添加到源碼路徑中,這樣在調試時,就可以調試IDEA自身的代碼了:

第一個插件

我們來編寫一個最簡單的插件來學習編寫一個插件的完整步驟。

新建工程

選擇

IntellJ Platform Plugin

,然後Project SDK指定剛剛新建的plugin sdk:

新建的插件項目:

插件根目錄下有兩個目錄

src

resources

src

是插件代碼目錄,

resource

是插件資源目錄,其中

META-INF/plugin.xml

是插件的描述文件,就像Java web項目的

web.xml

一樣。

plugin.xml默認的內容如下:

com.your.company.unique.plugin.id

Plugin display name here

1.0

YourCompany

Enter short description for your plugin here.

most HTML tags may be used

]]>

Add change notes here.

most HTML tags may be used

]]>

新建一個Action

插件擴展IDEA最常見的方式就是在菜單欄或者工具欄中添加菜單項,用戶通過點擊菜單項來觸發插件功能。IDEA提供了

AnAction

類,這個類有一個虛方法

actionPerformed

,這個方法會在每次菜單被點擊時調用。

新建一個自定義的Action有兩個步驟:

繼承AnAction類,在actionPerformed方法中實現插件邏輯註冊action,有兩種方式,通過代碼註冊和通過plugin.xml註冊我們先寫一個簡單的Action類:

public class TextBoxes extends AnAction {

// 如果通過Java代碼來註冊,這個構造函數會被調用,傳給父類的字符串會被作為菜單項的名稱

// 如果你通過plugin.xml來註冊,可以忽略這個構造函數

public TextBoxes() {

// 設置菜單項名稱

super("Text _Boxes");

// 還可以設置菜單項名稱,描述,圖標

// super("Text _Boxes","Item description",IconLoader.getIcon("/Mypackage/icon.png"));

}

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:

這裡我們新建了一個菜單組,其中text字符串的下劃線表示這個字母作為快捷鍵。這個菜單顯示的效果如下:

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

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

運行插件

運行插件特別簡單,和運行普通Java代碼一樣,點擊運行或者調試的按鈕,就會啟動一個新的IDEA實例,這個實例中插件是生效的。

點擊Text Boxes就可以看到插件的效果了。

相關焦點

  • 寫代碼用這6款IDEA插件,讓你快到飛起!
    搞Java開發當然必用神器idea,那麼,idea的插件一定是你不可或缺的了。一方面可以提升自己的編碼效率,另一方面減輕工作時的苦悶煩躁。以下就為大家介紹幾款優秀的idea插件以及它們的使用方法。因為 idea的背景是純色,看久了使人麻木,並且單調,有了Background Image Plus,就可以設置自己喜歡圖片,顯得比較活潑一點,比如你換個自己喜歡的明星、人物是不是寫代碼時就可以充滿幹勁!還能設為每隔一段時間後隨機變化圖片,以及圖片的透明度等等,寫代碼無聊?用它用它!2.
  • 網頁開發離不開的12款擴展插件
    鑑於此,今天,小芯整理了一些不錯的擴展工具,有助於軟體工程師更高效、更快地開發程序,尋找漏洞。1、React/Redux和Vue開發工具React.js和Vue.js是很不錯的Javascript框架,但要想完全掌握,需要用到其各自的擴展插件。
  • IntelliJ IDEA 2020 Mac 2020.3.1無限試用版(Java開發工具)
    intellijideamac漢化版是一款功能強大,功能多樣且用戶友好的JavaIDE,專門設計用於藉助眾多工具和功能提高您的工作效率。IntelliJ IDEA2020提供了一套全面的功能,以及使用Java,Groovy,Scala和其他語言進行Web和企業開發的最先進技術和框架的工具和集成。最重要的是,IntelliJIDEA支持各種構建系統和單元測試框架集成以及直觀的測試運行UI。
  • 代碼神器:拒絕重複編碼,這款IDEA插件了解一下...
    作者:HeloWxl www.jianshu.com/p/e4192d7c6844  Easycode是idea的一個插件,可以直接對數據的表生成entity、controller、service、
  • idea編寫Java代碼時中文字符實時替換為英文字符的多種方法
    本來計劃自己寫一個,不過發現了一個插件,支持idea以及JetBrains 全家桶。默認情況下,這個插件可以把下面的常用標點符號進行中英文轉換,也可以自定義需要的各種標點符號。, , 。 . : : ; ; ! ! ? ?
  • 開發者常用的十款Chrome插件
    ,最近我比較關注各種提高開發效率的工具與技巧,今後看到這樣主題的內容,也會多多推薦給大家:)在掘金的第十二期沸點活動中,掘金上的開發者們紛紛亮出了自己正在使用的 Chrome 插件,這裡面有開發利器,也有各種實用工具。
  • 強烈推薦 10 款珍藏的 Chrome 瀏覽器插件
    作者:沉默王二Firebug 的年代,我是火狐(Mozilla Firefox)瀏覽器的死忠;但後來不知道為什麼,該插件停止了開發,導致我不得不尋求一個新的網頁開發工具。那段時間,不少人開始推薦 Chrome 瀏覽器,我想那就試試吧,期初我覺得用起來很彆扭,畢竟我不是一個「喜新厭舊」的人。但用的次數越來越多,也就習慣了。
  • 安利幾個讓你爽到爆的IDEA必備插件
    上一篇關於IDEA插件推薦的文章:《第一彈!安排!安利10個讓你爽到爆的IDEA必備插件!》收到了很多小夥伴的好評,時隔大半個月左右,第二彈IDEA插件總算來啦!下面推薦的插件都是我覺得比較實用的,不過你可以根據自己的需要,適當進行選擇。另外 IDEA 自帶的很多插件如果沒有用到的話都可以關掉,這樣可以提高IDEA的運行速度。
  • 老D在使用的幾款 Chrome 插件(擴展程序)
    由於平時需要,目前老D電腦上安裝了四款瀏覽器:谷歌Chrome瀏覽器、火狐Firefox瀏覽器、搜狗高速瀏覽器、Opera瀏覽器。而主力還是摯愛的Chrome,其次Firefox。今天給大家簡單介紹下我目前在使用的幾款Chrome 插件.
  • AE插件如何安裝,AE插件大全(含AE光效插件/調色插件/特效插件)
    經常使用AE的小夥伴一定清楚想要獲得更好的效果,插件是必不可少的,沒有插件的AE軟體就像沒有子彈的槍一樣,不能發揮全部力量。為了讓影視後期者能在特效處理時少走彎路,世紀man給大家整理了幾款常用,功能強大的AE插件套件,讓大家更快掌握AE軟體的精髓。
  • 這7款Chrome 插件,堪稱神器
    給大家介紹這7款Chrome 插件,堪稱神器,感興趣的朋友可以收藏起來。1、OneTab谷歌雖然好用,但經常因為內存佔用而被人吐槽。使用Chrome時經常會一次打開好多tab,很多暫時不會用到,但又不捨得關,內存就這樣佔用著。
  • CAD六大常用插件排行榜 誰是插件之王?
    特點:由專業的規劃測繪人員開發,因為功能齊全,常用於設計院層面,包括畫總規,控規等。 針對性:7.5分 通用性:7分
  • 「LOL大神自己編寫一個插件,完美代替WG」
    電競行業的越來越熱門,導致騰訊官方加大了對遊戲的監管力度,也開發出了屬於自己的登錄軟體wegame,但是這個軟體受到了很多玩家的調侃,尤其是在使用這個軟體的時候,遊戲會變得非常卡,最近也有玩家,實在看不過去,自己寫了一個插件。
  • Sketch 官方強烈推薦的五款流程效率類插件
    在第一期裡,我們將了解五款幫助設計團隊提升流程效率的插件與服務。一、WeTransferWeTransfer 提供了簡單易用的文件共享服務,在創意設計領域廣受歡迎。WeTransfer 主張工作流程的強化,旨在幫助人們「毫不費力地將創意概念進行傳遞」。
  • 9款良心chrome瀏覽器插件,你值得擁有!
    Chrome瀏覽器是我們大多數人都會使用的插件,今天小編就為大家推薦幾款良心的瀏覽器插件,快來看看吧!1. Google Arts & Culture插件這個插件能讓你打開一個新標籤頁,系統就隨機將頁面變成一幅畫作,你永遠不知道下一幅圖畫會給你怎樣的驚喜。
  • Google 移除兩款劫持 Cookie 信息的 Chrome 廣告屏蔽插件
    被移除的插件分別「山寨」了兩款主流的廣告屏蔽插件 —— Adblock Plus 和 uBlock。
  • Deepin開發真香!Java開發環境全套安裝及配置圖文教程
    >Spring Initializr:在IDEA中安裝Spring Initializr插件Hello World:編寫並運行一個Hello World項目本文內容主要是針對Java開發環境的配置教程一.安裝JDK作為一個Java開發者,準備好JDK的環境是第一件必須做的事情
  • 10款插件讓你的Chrome成為全世界最好用的瀏覽器!
    但更重要的是Chrome的插件庫,讓其如虎添翼,擁有更加強大的功能。所以,今天,就分享給大家常用的十款插件。1、Momentum ——定義你的新標籤頁Momentum插件是一款自動更換壁紙,自帶時鐘,任務日曆和工作清單的chrome瀏覽器插件。裡面的圖片全部來自500PX裡面的高清圖,無廣告,無彈窗,非常適合筆記本使用,讓裝逼再上新臺階。感受一下出自細節,觸及心靈的美。
  • 「建議收藏」非常實用的幾款Maya動畫插件
    動畫軟體Maya可以通過多種方式幫助改進工作流程,但插件是大多數人都熟悉的,並且它們通常比隨機MEL腳本有更好的支持;它們往往由公司或大型工作室開發,具有優秀的團隊,開發周期和支持。小編收集了一些Maya頂級的動畫製作插件分享給大家。涵蓋2D繪製到3D動畫,可以協助動畫工作者完成各類特定的工作任務。
  • 最高效Java開發IDE工具IntelliJ IDEA發布
    IntelliJ IDEA一直被視為Java開發效率最高的產品,簡稱:IDEA。差評做簡便,幾乎可以不用滑鼠完成你要做的任何事情,最大程度的加快開發的速度。  下載地址:https://www.jetbrains.com/idea/download/#section=windows