養(yǎng)發(fā)神器:重復(fù)代碼一鍵生成,從此遠(yuǎn)離加班,告別禿頭!
一、背景
??作為Java開(kāi)發(fā),經(jīng)常需要根據(jù)數(shù)據(jù)庫(kù)某個(gè)字段獲取對(duì)應(yīng)的枚舉類,然后就要在枚舉類添加如下的方法:
java復(fù)制代碼 ? ?public static TestEnum getByCode(Integer code) { ?? ? ? ?return Arrays.asList(values()).stream().filter(i -> i.getCode().equals(code)).findFirst().orElse(null); ?? ?}
這種方法在不同枚舉類的實(shí)現(xiàn)都是很相似的,有什么辦法可以避免這種重復(fù)勞動(dòng)呢? ??于是,我就想到了寫一個(gè)Idea插件去自動(dòng)生成代碼,EnumHelper應(yīng)運(yùn)而生。
二、插件展示
目前該插件已經(jīng)發(fā)布,在Marketplace搜索EnumHelper下載安裝即可體驗(yàn),有其他建議大家也可以留言。
使用教程:
復(fù)制你想要查詢的枚舉字段
生成對(duì)應(yīng)的枚舉方法
三、踩坑總結(jié)
該項(xiàng)目代碼不是很復(fù)雜,就不在這里貼出來(lái)了,如果你感興趣的話可以查看源代碼,網(wǎng)上也有一些不錯(cuò)的插件開(kāi)發(fā)教程這里簡(jiǎn)單列一下。
相關(guān)教程:
你們要的Intellij IDEA 插件開(kāi)發(fā)秘籍,來(lái)了!
IDEA插件開(kāi)發(fā)實(shí)戰(zhàn)
官方文檔:plugins.jetbrains.com/docs/intell…
但是在開(kāi)發(fā)過(guò)程中還是踩了不少坑,覺(jué)得有必要在這里記錄下。
問(wèn)題1: 插件開(kāi)發(fā)創(chuàng)建項(xiàng)目有兩種方式,第一種是選擇Intelij Platform Plugin直接創(chuàng)建,第二種是選擇Gradle的方式創(chuàng)建,開(kāi)始選擇了第一種方式,ProjectSDK選擇時(shí)沒(méi)有IntelliJ Platform Plugin SDK這個(gè)選項(xiàng)!
解決方案: 后面發(fā)現(xiàn)這個(gè)SDK是需要手動(dòng)創(chuàng)建的,Project Structure-->SDKs-->點(diǎn)擊+號(hào)添加。而且對(duì)于這兩種方式,如果你不需要引入其他第三方依賴,那么推薦第一種方式創(chuàng)建項(xiàng)目更簡(jiǎn)單,畢竟Gradle配置太麻煩而且有很多人不熟悉Gradle。
問(wèn)題2: 控制臺(tái)顯示Caused by: java.lang.ClassNotFoundException
解決方案: 后來(lái)發(fā)現(xiàn)包依賴不全,需要在plugin.xml添加如下兩個(gè)包。
xml復(fù)制代碼 ? ?<depends>com.intellij.modules.lang</depends> ?? ?<depends>com.intellij.modules.java</depends>
問(wèn)題3: 通過(guò)New-->Plugin Devkit-->Action創(chuàng)建的action,快捷鍵觸發(fā)無(wú)效!
解決方案: 看了官方文檔才發(fā)現(xiàn),idea創(chuàng)建的action配置是不全的,只有默認(rèn)的情況,我的筆記本是Mac OS系統(tǒng)需要在plugin.xml添加配置如下:
xml復(fù)制代碼 <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"/>
問(wèn)題4: 當(dāng)時(shí)代碼寫完功能也測(cè)試完了,準(zhǔn)備打包才發(fā)現(xiàn)找不到打包方式??。于是就以為這種方式打不了包,換成Gradle重建項(xiàng)目,然后idea下載gradle很慢我就取消,手動(dòng)下載了6.4.1的包,好不容易安裝完gradle啟動(dòng)卻報(bào)錯(cuò)至少要7.3+!
解決方案: build.gradle上org.jetbrains.intellij的版本和Gradle的版本有關(guān)聯(lián)關(guān)系的,如果不想升Gradle版本也可以降低org.jetbrains.intellij版本,建議提前閱讀plugins.jetbrains.com/docs/intell…
問(wèn)題5: build.gradle報(bào)錯(cuò)==No signature of method: build_ah2nr93m937t291v887ebyou3.patchPluginXml() is applicable for argument types==
解決方案: 這個(gè)問(wèn)題google都沒(méi)找到解決方案,后來(lái)感覺(jué)這個(gè)不重要就注釋掉試試,問(wèn)題解決。
問(wèn)題6: Gradle版本的項(xiàng)目弄好了,啟動(dòng)沙箱環(huán)境調(diào)試時(shí)才發(fā)現(xiàn)插件入口調(diào)不出來(lái),F(xiàn)ile菜單顯示的還是之前的插件action名稱。
解決方案: 后面想到可能是緩存導(dǎo)致的,就在項(xiàng)目SDKs配置那里找到沙箱環(huán)境路徑,在命令行進(jìn)入路徑rm -rf * 刪除所有文件,再次啟動(dòng)項(xiàng)目就行了。
問(wèn)題原因就是本地不同的idea插件開(kāi)發(fā),共用一個(gè)沙箱環(huán)境。