Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件。
要是这个操作是你们的编码环境特有的,那就只能自己写工具了。所以这里来学学如何编写IDEA插件,让自己的编程环境更加强大,更好的进行装逼。
开发IDEA插件有以下这些依赖:
你可能已经安装了Ultimate版本,但是你还是需要安装[IDEA][]的社区版本。因为商业版是闭源的,所以在调试时无法调试核心代码。
社区版的安装包里是不包含源码的,所以我们需要手动从github上clone一份:
git clone --depth 1 git://git.jetbrains.org/idea/community.git idea
关于从源码运行IDEA的方法参考 Check Out And Build Community Edition:
http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html
虽然不知道原因,但是根据Check Out And Build Community Edition:
http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html
我们需要建立一个 IDEA jdk来运行插件:
除非你在Mac上使用官方JDK,否则你需要手动添加 /lib/tools.jar到classpath中。关注微信公众号:匠心零度,在后台回复:idea,可以获取我整最新 IDEA 教程,都是干货。
打开 File|ProjectStructure新建一个 IntelliJPlatformSDK:
Java SDK选择我们刚刚建立的 IDEA jdk:
然后我们可以把下载的IDEA社区版源码添加到源码路径中,这样在调试时,就可以调试IDEA自身的代码了:
我们来编写一个最简单的插件来学习编写一个插件的完整步骤。
选择 IntellJPlatformPlugin,然后Project SDK指定刚刚新建的plugin sdk:
新建的插件项目:
插件根目录下有两个目录 src和 resources。src是插件代码目录, resource是插件资源目录,其中 META-INF/plugin.xml是插件的描述文件,就像Java web项目的 web.xml一样。
plugin.xml默认的内容如下:
<idea-plugin> <id>com.your.company.unique.plugin.id</id> <name>Plugin display name here</name> <version>1.0</version> <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor> <description><!\[CDATA\[ Enter short description for your plugin here.<br> <em>most HTML tags may be used</em> \]\]></description> <change-notes><!\[CDATA\[ Add change notes here.<br> <em>most HTML tags may be used</em> \]\]> </change-notes> <!\-\- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting\_started/build\_number_ranges.html for description --> <idea-version since-build="145.0"/> <!\-\- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting\_started/plugin\_compatibility.html on how to target different products --> <!\-\- uncomment to enable plugin in all products <depends>com.intellij.modules.lang</depends> --> <extensions defaultExtensionNs="com.intellij"> <!\-\- Add your extensions here --> </extensions> <actions> <!\-\- Add your actions here --> </actions> </idea-plugin>
插件扩展IDEA最常见的方式就是在菜单栏或者工具栏中添加菜单项,用户通过点击菜单项来触发插件功能。IDEA提供了 AnAction类,这个类有一个虚方法 actionPerformed,这个方法会在每次菜单被点击时调用。
新建一个自定义的Action有两个步骤:
1、 继承 AnAction类,在 actionPerformed方法中实现插件逻辑 2、 注册action,有两种方式,通过代码注册和通过 plugin.xml注册
我们先写一个简单的Action类:
publicclass TextBoxes extends AnAction { // 如果通过Java代码来注册,这个构造函数会被调用,传给父类的字符串会被作为菜单项的名称 // 如果你通过plugin.xml来注册,可以忽略这个构造函数 public TextBoxes() { // 设置菜单项名称 super("Text _Boxes"); // 还可以设置菜单项名称,描述,图标 // 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:
<actions> <group id="MyPlugin.SampleMenu" text="_Sample Menu" description="Sample menu"> <add-to-group group-id="MainMenu" anchor="last" /> <action id="Myplugin.Textboxes"class="Mypackage.TextBoxes" text="Text _Boxes" description="A test menu item" /> </group> </actions>
这里我们新建了一个菜单组,其中text字符串的下划线表示这个字母作为快捷键。这个菜单显示的效果如下:
除了手动新建Action,IDEA还提供了快速新建的方法,在代码目录上点击新建,可以看到Action:
可以在这个面板中填写你要新建的Action信息,IDEA会帮你新建类,还有在plugin.xml中帮你注册:
运行插件特别简单,和运行普通Java代码一样,点击运行或者调试的按钮,就会启动一个新的IDEA实例,这个实例中插件是生效的。
点击Text Boxes就可以看到插件的效果了。
作者 | 木杉的博客
来源 | http://imushan.com
最后
刚整理 2020 年全套最新精品技术资料免费发给你! (原价最少8999元,超2000G!)
领取 看看下面!!
1、点赞 + 评论 (勾选 “转发” )
2、关注小编私信。点击头像,关注。并私信回复关键词: 1024
时虽然经常接触IDEA,但是始终还是一些功能不了解的。最近由一个IDEA提示Unable to parse template"Class"问题,让我发现了IDEA的自定义代码模板功能。
最近由于更换了JDK,打开IDEA发现创建的Class提示以下异常
所以,去百度搜索了下原因,才知道换了JDK后导致IDEA里边的模板空了,包括什么interface、xml、html创建模板都是空的,比如创建Class时的模板就像下图所示:
其实正常情况下他是这样的:
这里的模板解释一下,就是每当你创建一个class或者html后文件中会自动生成一些代码,那就是有模板生成的。
至于为什么替换JDK后会导致Idea里边的模板被掏空了,大家可以下去研究一下!所以根据以上解决我遇到问题办法就有两个:
一个是把上边的模板按照正确的方式敲上去,当然我选择第二种方式,那就是找到安装IDEA目录下的bin目录下文件idea.exe.vmoptions 或 idea64.exe.vmoptions,然后修改在idea.exe.vmoptions 或 idea64.exe.vmoptions中加入配置
-Djdk.util.zip.ensureTrailingSlash=false
当然,问题到这里已经解决了!我去看了下上边模板的代码,我觉得很有意思,想到我们在写入口类的时候一定会在类里边有这样一个静态main函数:
public static void main(String[] args) {...}
那我何不效仿普通的Class,添加一个入口类的模板呢,实验了一下,确实有效果
其实在我们项目代码中可能经常会遇到重复代码的问题,比如前端html的某些页面,其实我们可以使用这个方式,就不用去重复的COPY代码,当然有些前端模板可以使用特殊的标签实现,但有时候在某些项目中,这也不失为一种解决方式。
--|END|--
微信搜一搜“宅男一号”加关注,给你带来更多精彩分享!
欲善其事,必先利其器 。每次看到别人用IDEA 的时候,都会发现,哇哦,还能这样操作,还有每次注册码失效的时候,我都为自己在用盗版软件而“悔恨为什么不多赚钱支持正版”,然后到处找注册码,所以有了这篇~安装和写hello world 部署到服务器这些就不记录了
IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
IDEA是 JetBrains 公司的产品,公司旗下还有其它产品,比如:WebStorm、DataGrip、GoLand...
在 Eclipse 中我们有 Workspace(工作空间)和 Project(工程)的概念,在 IDEA 中只有 Project(工程)和 Module(模块)的概念 。Eclipse 中 workspace 相当于 IDEA 中的 Project ,Eclipse 中 Project 相当于 IDEA 中的 Module
IDEA 和 Eclipse 的术语对比
EclipseIntelliJ IDEAWorkspaceProjectProjectModuleFacetFacetLibraryLibraryJRESDKClasspath variablePath variable
实时代码模板 (Live Templates)
它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子 就是在 Java 中输入 sout 会出现 System.out.println();
Editor – General – Postfix Completion 查看已经存在的模板(不可修改)
Editor — Live Templates 查看或自定义模板(可以添加方式注释、类注释)
*
* @description:
* @param $param$
* @return $return$
* @date $time$ $date$
**/
类注释一般通过 File — Setting — Editor — Live Templates — File and Code Templates 设置
程序猿么,每天都在写bug,所以这个功能一定得用的溜
配置通用调试属性和行为 :Settings/Preferences | Build, Execution, Deployment | Debugger
断点有四种类型:
左键点击行号栏(快捷键:Ctrl+F8 )
点击Debug工具窗口左侧的的 View Breakpoints
或者快捷键 Ctrl+Shift+F8 ,可以新建异常检测,或者检测所有异常(Any Exception) 情况,这样只要程序有相应异常,就会挂起
有时候我们在循环处理数据时候,可能只关心某个条件的数据,就可以在断点位置右键,设置断点条件,(下图,在i==6 的时候挂起程序)
在调试多线程代码时候,只能串行调试,因为IDEA在Debug时默认阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程走完时才会走其它线程。如果像下图一样是lambda表达式的行,可以选择断点类型。
可以在 View Breakpoints 里选择 Thread (右键断点),这样就可以Frames 切换线程debug了。
断点这块有好多功能,可以分析JVM中堆对象、Java8的Stream操作,留个传送门。。。TODO
某大佬总结的:在Intellij IDEA中使用Debug
官方教程:https://www.jetbrains.com/help/idea/debugging-code.html
有时候会有一些服务器差异问题导致的问题,不好排查,这个时候就想远程调试下服务器上的代码。
① 配置tomcat, 在tomcat/bin下的 catalina.sh 上边添加下边的一段设置
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9527
② IDEA设置
③ 在IDEA上启动远程 tomcat后,就能debug了
还有一种复制Startup/Connection 中的内容到 JAVA_OPTS 中,没有尝试
书签在翻看源码或者大佬代码的时候,可以方便记录代码的调用链路。
书签有匿名书签(可以有无数个)和标记书签(有数字或者字母助记符的书签)两种
操作书签:Navigate | Bookmarks 可以创建匿名书签 Toggle Bookmark。创建标技书签 Toggle Bookmark With Mnemonic,查看标签 Show Bookmarks
IDEA 主题和插件排行榜:https://plugins.jetbrains.com/search?orderBy=downloads&products=idea
仅供个人学习使用~~
1. 下载补丁文件 jetbrains-agent.jar 并将它放置到 Idea安装目录的bin目录下,https://pan.baidu.com/s/1Zy-vQGOdKoqDdB8sWIcQOg
免费试用,进入IDEA, 点击最上面的菜单栏中的 Help - Edit Custom VM Options,在idea.exw.vmoptionos文件中加入-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.4\bin\jetbrains-agent.jar(换成你的jar包目录),重启
2. 重启IDEA 后,打开 Help — Register ,在License Server 填上, http://jetbrains-license-server ,失败的话就输入下边的注册码
520E5894E2-eyJsaWNlbnNlSWQiOiI1MjBFNTg5NEUyIiwibGljZW5zZWVOYW1lIjoicGlnNiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiJVbmxpbWl0ZWQgbGljZW5zZSB0aWxsIGVuZCBvZiB0aGUgY2VudHVyeS4iLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJSRCIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJEQiIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkRQTiIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkdPIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In1dLCJoYXNoIjoiODkwNzA3MC8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-DZ/oNHBfyho0XrrCJJvAOKg5Q1tLBgOdbCmzCKwkuM+Yryce0RoOi3OOmH6Ba/uTcCh/L37meyD0FJdJIprv59y4+n+k2kIeF/XKrKqg0dEsDUQRw0lUqqMt99ohqa+zmbJ44Yufdwwx/F1CtoRGvEQ2Mn0QjuqRoZJZ3wiT5Am22JiJW8MaNUl3wg9YPj+OPGARKKJUdUJ0NGUDQBcBAv5ds8LhbSbJSbPkbkwH/a1QMz4nEdn6lRDKI1aFIn43QhBSCFqvUq6TPJlbIJ0ZjE+PyZjHFBKCgkry0DHPXU2BbtIZPsksQnN3fx240a9K6sN7peZnLpEoMoq23FEz4g==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5ndaik1GD0nyTdqkZgURQZGW+RGxCdBITPXIwpjhhaD0SXGa4XSZBEBoiPdY6XV6pOfUJeyfi9dXsY4MmT0D+sKoST3rSw96xaf9FXPvOjn4prMTdj3Ji3CyQrGWeQU2nzYqFrp1QYNLAbaViHRKuJrYHI6GCvqCbJe0LQ8qqUiVMA9wG/PQwScpNmTF9Kp2Iej+Z5OUxF33zzm+vg/nYV31HLF7fJUAplI/1nM+ZG8K+AXWgYKChtknl3sW9PCQa3a3imPL9GVToUNxc0wcuTil8mqveWcSQCHYxsIaUajWLpFzoO2AhK4mfYBSStAqEjoXRTuj17mo8Q6M2SHOcwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQBonMu8oa3vmNAa4RQP8gPGlX3SQaA3WCRUAj6Zrlk8AesKV1YSkh5D2l+yUk6njysgzfr1bIR5xF8eup5xXc4/G7NtVYRSMvrd6rfQcHOyK5UFJLm+8utmyMIDrZOzLQuTsT8NxFpbCVCfV5wNRu4rChrCuArYVGaKbmp9ymkw1PU6+HoO5i2wU3ikTmRv8IRjrlSStyNzXpnPTwt7bja19ousk56r40SmlmC04GdDHErr0ei2UbjUua5kw71Qn9g02tL9fERI2sSRjQrvPbn9INwRWl5+k05mlKekbtbu2ev2woJFZK4WEXAd/GaAdeZZdumv8T2idDFL7cAirJwcrbfpawPeXr52oKTPnXfi0l5+g9Gnt/wfiXCrPElX6ycTR6iL3GC2VR4jTz6YatT4Ntz59/THOT7NJQhr6AyLkhhJCdkzE2cob/KouVp4ivV7Q3Fc6HX7eepHAAF/DpxwgOrg9smX6coXLgfp0b1RU2u/tUNID04rpNxTMueTtrT8WSskqvaJd3RH8r7cnRj6Y2hltkja82HlpDURDxDTRvv+krbwMr26SB/40BjpMUrDRCeKuiBahC0DCoU/4+ze1l94wVUhdkCfL0GpJrMSCDEK+XEurU18Hb7WT+ThXbkdl6VpFdHsRvqAnhR2g4b+Qzgidmuky5NUZVfEaZqV/g==
3. Help — About,搞定
IntelliJ IDEA 2019.3官方指南 https://www.jetbrains.com/help/idea/installation-guide.html
idea2019激活 https://segmentfault.com/a/1190000021488264
*请认真填写需求信息,我们会在24小时内与您取得联系。