从Eclipse转移到IntelliJ IDEA

用了一年多的WebStorm进行ionic的开发,习惯了之后在使用Eclipse进行Java Web开发的时候,编辑js或sass等前端文件的时候各种不爽。在用WebStorm之前也尝试使用IntelliJ IDEA,但最终因为各种不习惯而作罢。

下载安装及基本设置

首先在IetelliJ IDEA官网下载最新Ultimate版(当前版本号是2017.3.5),安装之后首先设置点击 Configure - Settings 进行一些基础的设置。

  • 在搜索框中输入 encoding, 将相关的编码都修改为UTF-8,防止出现乱码等问题;
  • 在搜索框中输入 font,修改软件界面和编辑器的字体和字号,软件界面的字体在 Appearance & Behavior - Appearance 中,需要先勾选 Override default fonts by;编辑器的字体在 Editor - Font 中。
  • 在Keymap中选择 Eclipse,方便从Eclipse中过渡。

SVN导入项目及相关操作

选择 Check out from Version Control - Subversion,将SVN上的项目导入到IntelliJ IDEA中

初次打开的时候会出现下面的错误:

Cannot load supported formats: Cannot run program "svn": CreateProcess error=2, The system cannot find the file specified

这个时候需要在设置 Version Control - Subversion 中将 Use command line client 去掉(见下图):

PS: 最新版(2018.1)中将 Use command line client 选项去掉了,可以将路径指向本地的svn应用程序即可。

刚从Eclipse转到IntelliJ IDEA的时候,对其中的版本控制管理有一些不习惯,Eclipse可以直接在左边项目视图中右键对文件进行版本控制,而IntelliJ IDEA则统一在Version Control视图中进行管理,可以通过点击左下角图标打开(见下图):

Maven相关

整理Maven项目

记得之前尝试使用IntelliJ的时候,第一次导入多模块的Maven项目之后,解析出现了混乱,没有像Eclipse那样一目了然,这个时候可以通过File - Project Structure 菜单打开项目设置:

进入Modules,先将现有的maven模块全部删除,再点击+按钮并选择Import Module,选择项目的pom.xml文件即可。

运行Maven命令

首先在左下角点击图标打开 "Maven Projects" 视图:

可以看到里面会列出Maven常用的命令,可以点击 Run - Edit Configurations 菜单打开Run/Debug Configuration对话框,然后点击 + 图标并选择Maven,新建一个Maven命令。

内容跟Eclipse中差不多,Working directory选择项目的根目录,Command Line为maven的命令,可以在Runner标签中设置VM的一些参数,比如jetty的端口等(需要首先将Use project settings勾掉)。保存之后就可以选择之后点击右上角的 按钮执行了。

出现Maven project configuration required for module 'xxx' isn't available 错误

有时候启动Maven项目的时候会出现上面的错误,这个时候只要选择 Build-Rebuild Project 菜单重新编译一下项目即可。

使用JRebel

使用JVM参数的方式启动

首先下载JRebel的zip文件,解压到某个目录下面,然后使用下面的JVM参数启动:

-noverify -javaagent:<your_jrebel_home>jrebel.jar -Xms1024m -Xmx1024m -Xmn128M -Xss1M -Xverify:none -XX:PermSize=64M -XX:MaxPermSize=512m -Djetty.port=80

需要将上面的your_jrebel_home替换成你自己的JRebel目录,后面的-X...是JVM的参数,不是必选的,可以根据实际情况进行设置。

使用IntelliJ插件的方式启动

首先安装JRebel插件,在运行之前确保所要运行的项目支持JRebel,可以在JRebel Panel中进行设置(可以通过View - Tool Windows - JRebel 菜单打开),如下图:

最后点击 Run - Run with JRebel 'xxx' 菜单或点击右上角的图标,可以启用JRebel。如果在控制栏中输出类似下面的内容表示运行成功:

启用自动编译实现保存即刷新

使用上面两种方式启动JRebel之后,由于默认情况下IntelliJ没有使之修改源码之后自动编译,因此每次修改之后需要手动按Ctrl+F9之后才能生效,这样非常不方便,可以设置成自动编译。
首先打开Help - Find Action 菜单(实际情况下可以使用快捷键打开比较方便),输入registry,然后选择Registry,如下图:

在进入的Registry对话框中将compiler.automake.allow.when.app.running选中,另外IntelliJ IDEA默认情况下保存了文件之后会延迟1500ms之后在进行后续的操作的,这样在保存java文件之后会等1.5s之后才会被自动编译并被JRebel进行加载,不像Eclipse中那样感觉是实时的,如果想要跟Eclipse实现一样的效果,可以调小 compiler.document.save.trigger.delay 参数的值。

最后还需要在系统设置中设置为自动编译,打开设置对话框,在Compiler下面确保勾选下面的两个选项:

这样设置之后,修改完java文件内容,保存之后JRebel会自动进行编译和加载。

Spring中使用@Autowired注入服务显示为null

使用上面的方式在web项目中启用JRebel之后,如果是一个Spring项目的话,如果新使用 @Autowired 注入一个新的服务之后,服务的值总是null,只能重启项目才可以。
解决的办法是,在项目中禁用框架检测功能更,如下图将 Enable framework detection 勾掉:

也可以直接删除Spring的特性,如下图:

上面的操作完成之后,使用JRebel重新启动项目就可以了。

resources中的xml、sql等文件修改不生效

在左侧的项目目录右键,依次选择“JRebel”-“Configure module”:

在打开的 JRebel Configuration 窗口中,勾选“Use relative paths in rebel.xml”选项,并依次点击Regenerate xml configuration 按钮和OK按钮,然后重新启动JRbel即可。

几个实现Eclipse操作的小习惯

同一个文件实现多个窗口

在Eclipse中可以在文件标签右键选择 New Editor,这样就会出现两个同文件的窗口,然后拖动另外一个窗口到指定的位置(比如下面),这样就会形成多个窗口,方便前后进行参考。IntelliJ IDEA中实现同样的效果需要右键选择 Split Vertically或Split Horizontally,这样就会形成两个上下或左右的窗口了,可以把多个标签一起都拖到下面,不过相同文件的两个标签不能同时在一排,这一点跟Eclipse不同。

关闭一个标签之后显示上次编辑的标签

在Eclipse中如果关闭一个标签之后,会自动打开上一个编辑过的标签,而IntelliJ IDEA默认情况下会打开左边的第一个标签,感觉很别扭。可以通过下面的设置达到上面的效果:

自动显示javadoc内容

在Eclipse中鼠标移到某个类名或方法名上,会自动显示javadoc的内容,IntelliJ默认是关闭的,可以通过下面的方法进行设置:

代码缩进及风格

代码风格因人而异,可以在设置中的 Editor - Code Style 中进行调整。我个人喜欢使用tab代替空格,并且多参数缩进不喜欢tab太多,设置如下:

自动生成serialVersionUID

默认情况下IntelliJ不会自动生成序列化类的serialVersionUID,首先进行下面的设置:

然后当点击序列化的类名之后,按Alt+Enter会出现 Add 'serialVersionUID' field ,点击会自动生成。

自动提示忽略大小写

Eclipse中自动提示是忽略大小写的,IntelliJ中默认是匹配第一个字母的大小写,可以通过下面的设置让其忽略大小写:

不输入任何词按快捷键自动进行代码提示

在Eclipse中在不输入任何关键词,按 Alt+/ 快捷键之后会自动进行代码提示。在IntelliJ中默认的快捷键是 Ctrl+空格,这个快捷键跟系统的切换输入法相冲突,而默认的 Alt+/是用来快速选择变量名的,所以需要重新设置一下,在设置里面输入 completion 关键词,在Keymap中可以看到如下图,右键可以删除和添加快捷键:

如上图所示,将 Completion 中的 Basic由默认的 Ctrl+空格 修改为了 Alt+/,SmartType由默认的 Alt+Shift+空格 修改成了 Alt+Shift+/;Cyclic Expand Word由默认的 Alt+/ 修改为了 Alt+,,Cyclic Expand Word (Backward) 由默认的 Alt+Shift+/ 修改为了 Alt+.

自动导入包名和类名

默认情况下IntelliJ不会自动导入包名和类,需要做如下的设置:

上面Add unambiguous imports on the fly会在书写类的时候自动导入需要的包,不过对于同名的类名需要手动使用Alt+Enter进行导入;Optimize imports on the fly 会自动整理和优化导入的包名,去掉一些不适用的包名。

复制整行

默认情况下Edit-Duplicate Line or Select如果没有选中内容的话,可以复制光标所在的行;如果选中内容的话复制选中的内容。用惯了Eclipse的复制整行的功能很不习惯。

可以在Preferences中的Keymap中找到Duplicate Entire Lines功能项,并设置合适的快捷键。

各种不爽的设置

忽略css或js的错误检测

默认情况下IntelliJ对css和javascript采用了严格模式,如果打开文件之后发现任何的错误都会有如下的显示:

如果不愿意忍受的话,可以将错误检测的级别调整到最低,方法是在css和js文件上右键,分别选择 Analyze - Configure Current File Analysis...,如下图

然后将高亮的级别设置到最低:

这样设置之后等一会或再次打开错误的文件之后,世界就清净了。

Invalidate Caches & Restart大法

有时候项目编译都很正常,但是在编辑器里出现很多的错误,这个时候执行 "File" - "Invalidate Caches / Restart...",然后选择 "Invalidate and Restart"即可。如果遇到一些莫名其妙的问题,也可以使用该方式。

加快编译速度

使用Intellij的时候发现它的实时编译速度比Eclipse慢很多,如果使用了JDK8和Intellij IDEA14+,可以将编译器修改为eclispe:

详细的步骤参考这篇文章:加快Intellij IDEA的编译速度

基础教程推荐

对于刚刚切换到IntelliJ IDEA的新手来说,需要重新理解一些基础的概念,下面有两个不错的基础教程可以根据自己的情况来学习:
IntelliJ IDEA神器使用技巧 慕课上关于IntelliJ IDEA的基础视频教程,零基础入门,对于有Eclipse或WebStorm相关使用经验的可以快速跳着看不熟悉的内容。
IntelliJ IDEA 使用教程 极客学院的使用教程,也是基础入门,内容一目了然。

参考文档
Intellij idea subversion checkout error: Cannot run program “svn”
Intellij IDEA 一些不为人知的技巧
IntelliJ IDEA 在使用Subversion进行版本管理时,怎么忽略某个文件或者文件夹
使用IntelliJ IDEA 15和Maven创建Java Web项目
IntelliJ IDEA 2017.2+ JRebel 7.0.12 热部署
使用jRebel在IntelliJ IDEA 中进行 Java 热部署
IntelliJ IDEA shows errors when using Spring's @Autowired annotation
JRebel热部署 xml文件修改 sql文件修改 不生效
IntelliJ IDEA常用快捷键和使用技巧
Intellij IDEA & Sass 使用记录汇总
Change to most recently used tab when closing a tab in IntelliJ IDEA?
How to see JavaDoc in IntelliJ IDEA?
IntelliJ Idea generating serialVersionUID
Intellij IDEA的代码提示怎么出来啊?
idea忽略css文件报错
IntelliJ IDEA 自动导入包 关闭重复代码提示
Moving from Eclipse to IntelliJ IDEA: Experiences and Findings.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注