一、背景
作為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下載安裝即可體驗,有其他建議大家也可以留言。
使用教程:
- 複製你想要查詢的列舉欄位
- 生成對應的列舉方法
三、踩坑總結
該專案程式碼不是很複雜,就不在這裡貼出來了,如果你感興趣的話可以檢視原始碼,網上也有一些不錯的外掛開發教程這裡簡單列一下。
相關教程:
你們要的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外掛開發,共用一個沙箱環境。
如果覺得這篇文章對你有用,希望可以點個贊支援一波?