一、背景

作为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. 生成对应的枚举方法

养发神器:重复代码一键生成,从此远离加班,告别秃头!

三、踩坑总结

该项目代码不是很杂乱,就不在这里贴出来了,假如你感兴趣的话能够查看源代码,网上也有一些不错的插件开发教程这里简单列一下。

相关教程:

你们要的Intellij IDEA 插件开发秘籍,来了!
IDEA插件开发实战
官方文档:plugins.jetbrains.com/docs/intell…

但是在开发过程中仍是踩了不少坑,觉得有必要在这里记录下。

问题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版别,主张提前阅读plugins.jetbrains.com/docs/intell…

问题5: build.gradle报错==No signature of method: build_ah2nr93m937t291v887ebyou3.patchPluginXml() is applicable for argument types==

解决方案: 这个问题google都没找到解决方案,后来感觉这个不重要就注释掉试试,问题解决。

问题6: Gradle版别的项目弄好了,发动沙箱环境调试时才发现插件进口调不出来,File菜单显现的仍是之前的插件action称号。

解决方案: 后边想到可能是缓存导致的,就在项目SDKs装备那里找到沙箱环境途径,在命令行进入途径rm -rf * 删去所有文件,再次发动项目就行了。

养发神器:重复代码一键生成,从此远离加班,告别秃头!

问题原因便是本地不同的idea插件开发,共用一个沙箱环境。