養髮神器:重複程式碼一鍵生成,從此遠離加班,告別禿頭!

煙味i發表於2023-03-01

一、背景

作為Java開發,經常需要根據資料庫某個欄位獲取對應的列舉類,然後就要在列舉類新增如下的方法:

    public static TestEnum getByCode(Integer code) {
        return Arrays.asList(values()).stream().filter(i -> i.getCode().equals(code)).findFirst().orElse(null);
    }

這種方法在不同列舉類的實現都是很相似的,有什麼辦法可以避免這種重複勞動呢?
  於是,我就想到了寫一個Idea外掛去自動生成程式碼,EnumHepler應運而生。

二、外掛展示

目前該外掛已經發布,在Marketplace搜尋EnumHepler下載安裝即可體驗,有其他建議大家也可以留言。

搜尋安裝

使用教程:

  1. 複製你想要查詢的列舉欄位
  2. 生成對應的列舉方法

image

三、踩坑總結

該專案程式碼不是很複雜,就不在這裡貼出來了,如果你感興趣的話可以檢視原始碼,網上也有一些不錯的外掛開發教程這裡簡單列一下。

相關教程:

你們要的Intellij IDEA 外掛開發秘籍,來了!
IDEA外掛開發實戰
官方文件:https://plugins.jetbrains.com/docs/intellij/plugins-quick-start.html

但是在開發過程中還是踩了不少坑,覺得有必要在這裡記錄下。

問題1: 外掛開發建立專案有兩種方式,第一種是選擇Intelij Platform Plugin直接建立,第二種是選擇Gradle的方式建立,開始選擇了第一種方式,ProjectSDK選擇時沒有IntelliJ Platform Plugin SDK這個選項!

解決方案: 後面發現這個SDK是需要手動建立的,Project Structure-->SDKs-->點選+號新增。而且對於這兩種方式,如果你不需要引入其他第三方依賴,那麼推薦第一種方式建立專案更簡單,畢竟Gradle配置太麻煩而且有很多人不熟悉Gradle。

問題2: 控制檯顯示Caused by: java.lang.ClassNotFoundException

解決方案: 後來發現包依賴不全,需要在plugin.xml新增如下兩個包。

    <depends>com.intellij.modules.lang</depends>
    <depends>com.intellij.modules.java</depends>

問題3: 透過New-->Plugin Devkit-->Action建立的action,快捷鍵觸發無效!

解決方案: 看了官方文件才發現,idea建立的action配置是不全的,只有預設的情況,我的筆記本是Mac OS系統需要在plugin.xml新增配置如下:

 <keyboard-shortcut
                    keymap="$default"
                    first-keystroke="control shift J"/>

            <!-- ...except the "Mac OS X" keymap and its children. -->
            <keyboard-shortcut
                    keymap="Mac OS X"
                    first-keystroke="control shift J"
                    remove="true"/>

            <!-- The "Mac OS X 10.5+" keymap and its children will have only
            this keyboard shortcut for this action. -->
            <keyboard-shortcut
                    keymap="Mac OS X 10.5+"
                    first-keystroke="control shift J"
                    replace-all="true"/>

問題4: 當時程式碼寫完功能也測試完了,準備打包才發現找不到打包方式?。於是就以為這種方式打不了包,換成Gradle重建專案,然後idea下載gradle很慢我就取消,手動下載了6.4.1的包,好不容易安裝完gradle啟動卻報錯至少要7.3+!

解決方案: build.gradle上org.jetbrains.intellij的版本和Gradle的版本有關聯關係的,如果不想升Gradle版本也可以降低org.jetbrains.intellij版本,建議提前閱讀https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html。

問題5: build.gradle報錯No signature of method: build_ah2nr93m937t291v887ebyou3.patchPluginXml() is applicable for argument types

解決方案: 這個問題google都沒找到解決方案,後來感覺這個不重要就註釋掉試試,問題解決。

問題6: Gradle版本的專案弄好了,啟動沙箱環境除錯時才發現外掛入口調不出來,File選單顯示的還是之前的外掛action名稱。

解決方案: 後面想到可能是快取導致的,就在專案SDKs配置那裡找到沙箱環境路徑,在命令列進入路徑rm -rf * 刪除所有檔案,再次啟動專案就行了。

沙箱目錄

問題原因就是本地不同的idea外掛開發,共用一個沙箱環境。

如果覺得這篇文章對你有用,希望可以點個贊支援一波?

相關文章