1. 從 0 到 1 開發(fā)一個 IntelliJ IDEA 插件

        共 3218字,需瀏覽 7分鐘

         ·

        2022-02-28 08:09

        往期熱門文章:

        1、別瞎寫工具類了,Spring自帶的不香嗎?
        2、SpringBoot + Redis:模擬 10w 人的秒殺搶單
        3、如何選擇合適的分布式ID生成方案
        4、本機號碼一鍵登錄原理與應(yīng)用
        5、比 SpringBoot更快,更輕,更??!

        寫 Java 代碼的時候,經(jīng)常會涉及到重復(fù)性的操作,這個時候就會想要是有這樣一個插件就好了,如果是大家都會遇到的場景,IDE或許已經(jīng)提供了,再不然也有可能有人編寫了相關(guān)的插件。

        要是這個操作是你們的編碼環(huán)境特有的,那就只能自己寫工具了。所以這里來學(xué)學(xué)如何編寫IDEA 插件,讓自己的編程環(huá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)于從源碼運行IDEA的方法參考:Check Out And Build Community Edition

        添加 IDEA jdk

        雖然不知道原因,但是根據(jù)Check Out And Build Community Edition,我們需要建立一個IDEA jdk?來運行插件:

        除非你在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:

        新建的插件項目:

        插件根目錄下有兩個目錄srcresources。src是插件代碼目錄,resource是插件資源目錄,其中META-INF/plugin.xml是插件的描述文件,就像Java web項目的web.xml一樣。
        plugin.xml 默認的內(nèi)容如下:
        <idea-plugin>
        ??<id>com.your.company.unique.plugin.idid>

        ??<name>Plugin display name herename>
        ??<version>1.0version>
        ??<vendor?email="[email protected]"?url="http://www.yourcompany.com">YourCompanyvendor>

        ??<description>??????Enter short description for your plugin here.

        ??????most HTML tags may be used
        ????]]>description>

        ??<change-notes>??????Add change notes here.

        ??????most HTML tags may be used
        ????]]>
        ??change-notes>

        ??
        ??<idea-version?since-build="145.0"/>

        ??
        ??

        ??<extensions?defaultExtensionNs="com.intellij">
        ????
        ??extensions>

        ??<actions>
        ????
        ??actions>

        idea-plugin>
        新建一個 Action
        件擴展 IDEA 最常見的方式就是在菜單欄或者工具欄中添加菜單項,用戶通過點擊菜單項來觸發(fā)插件功能。IDEA 提供了?AnAction?類,這個類有一個虛方法?actionPerformed,這個方法會在每次菜單被點擊時調(diào)用。
        新建一個自定義的 Action 有兩個步驟:
        1. 繼承?AnAction?類,在?actionPerformed?方法中實現(xiàn)插件邏輯
        2. 注冊 action,有兩種方式,通過代碼注冊和通過?plugin.xml?注冊
        我們先寫一個簡單的Action類:
        public?class?TextBoxes?extends?AnAction?{
        ????// 如果通過Java代碼來注冊,這個構(gòu)造函數(shù)會被調(diào)用,傳給父類的字符串會被作為菜單項的名稱
        ????// 如果你通過plugin.xml來注冊,可以忽略這個構(gòu)造函數(shù)
        ????public?TextBoxes()?{
        ????????// 設(shè)置菜單項名稱
        ????????super("Text _Boxes");
        ????????// 還可以設(shè)置菜單項名稱,描述,圖標
        ????????// 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:

        ??<group?id="MyPlugin.SampleMenu"?text="_Sample Menu"?description="Sample menu">
        ????<add-to-group?group-id="MainMenu"?anchor="last"??/>
        ???????"Myplugin.Textboxes"
        ?class="Mypackage.TextBoxes"?text="Text _Boxes"?description="A test menu item"?/>
        ??group>
        這里我們新建了一個菜單組,其中 text 字符串的下劃線表示這個字母作為快捷鍵。這個菜單顯示的效果如下:

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

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

        運行插件

        運行插件特別簡單,和運行普通Java代碼一樣,點擊運行或者調(diào)試的按鈕,就會啟動一個新的IDEA實例,這個實例中插件是生效的。
        點擊 Text Boxes 就可以看到插件的效果了。

        參考資料

        • Setting Up a Development Environment

        • How to make an IntelliJ IDEA plugin in less than 30 minutes

        轉(zhuǎn)自:木杉是天才
        鏈接:https://www.cnblogs.com/mushan/p/12275581.html


        最近熱文閱讀:

        1、如何選擇合適的分布式ID生成方案
        2、面試題:為什么數(shù)據(jù)庫連接池不采用 IO 多路復(fù)用?
        3、SpringBoot 配置文件敏感信息如何加密?
        4、線上訂單號重復(fù)了?一招搞定它!
        5、一款高顏值的MySQL管理工具:Sequel Pro
        6、2021 年 GitHub 最佳開源軟件榜單
        7、Logback這樣配置,性能提升10倍!
        8、揭曉 2021 編程語言排行榜
        9、還在用策略模式解決 if-else?Map+函數(shù)式接口方法才是YYDS!
        10、??途W(wǎng):為什么不能將實數(shù)作為 HashMap 的 key?
        關(guān)注公眾號,你想要的Java都在這里

        瀏覽 61
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 欧美组合两个男的一个唱饶舌 | 国产一级日逼无码 | 大乳boobs | 亚洲一区成人波多野结衣在线观看 | 国产h视频在线观看 |