IDEA 之一常用配置与使用

大纲

IDEA 介绍

JetBrains 是一家捷克的软件开发公司,IntelliJ IDEA 是该公司旗下赫赫有名的 IDE 产品,支持目前主流的技术和框架,擅长企业应用、移动应用和 Web 应用的开发。IntelliJ IDEA 目前有两个版本,分别是社区版(免费)与旗舰版(收费),社区版支持 JavaSE、Android、Kotlin、Groovy、Scala 开发,旗舰版额外支持 JavaEE 开发。IntelliJ IDEA 和 Eclipse 一样有强大的插件系统支持,官方的插件可以从这里获取。

IDEA 的 config 与 system 目录

启动 IntelliJ IDEA 后会自动生成一个全新的默认配置,配置目录的位置分别是 /.IntelliJIdea2019.1/config、/.IntelliJIdea2019.1/system。其中 config 目录是 IntelliJ IDEA 个性化的配置目录,或者说是整个 IDE 的设置目录,该目录主要记录了 IDE 主要配置功能、插件功能、自定义的代码模板、自定义的文件模板、自定义的快捷键、Project 的 tasks 记录等等个性化设置。system 目录是 IntelliJ IDEA 的系统文件目录,是 IntelliJ IDEA 与开发项目的一个桥梁,里面主要有缓存、索引、容器文件输出等等,虽然不是最重要目录,但也是最不可或缺的目录之一。

1
2
3
4
5
# Linux下重置IDEA的所有配置
$ rm -rf ~/.config/JetBrains
$ rm -rf ~/.local/share/JetBrains
$ rm -rf ~/.IntelliJIdea2019.1/config
$ rm -rf ~/.IntelliJIdea2019.1/system

IDEA 中 Project 与 Module 的概念

在 Eclipse 中有 Workspace(工作空间)和 Project(工程)的概念,在 IntelliJ IDEA 中只有 Project(工程)和 Module(模块)的概念,IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。这里的对应关系为,Eclipse 中 Workspace 相当于 IDEA 中的 Project,Eclipse 中 Project 相当于 IDEA 中的 Module。Eclipse 可以在同一个窗口管理 N 个项目,这在 IntelliJ IDEA 是无法做到的。IntelliJ IDEA 提供的解决方案是打开多个项目实例,即打开多个项目窗口,即一个 Project 打开一个 Window 窗口。

IDEA 对版本控制工具的支持

很多人认为 IntelliJ IDEA 自带了 SVN 或者 Git 等版本控制工具,认为只要安装了 IntelliJ IDEA 就可以完全使用版本控制应有的功能。这完全是一种错误的解读,IntelliJ IDEA 是自带对这些版本控制工具的插件支持,但是该装什么版本控制客户端还是要照样装的,这一点和 Eclipse 是一样的。在 Window 环境下,经常使用的 Git 客户端有 msysGit、TortoiseGit 等。IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的,旗舰版默认支持目前主流的版本控制软件,例如 CVS、Git、Subversion (SVN)、Mercurial、Perforce、GitHub。

IDEA 支持本地文件历史的记录

当项目中没有使用版本控制功能,IntelliJ IDEA 也默认提供了本地文件历史记录。界面操作路径:选中文件 –> Local History –> Show History

IDEA 调整 VM 配置文件

  • 根据电脑系统的位数,选择修改 32 位的 VM 配置文件(idea.vmoptions)或者 64 位的 VM 配置文件(idea64.vmoptions)
  • 32 位操作系统内存不会超过 4G,因此没有多大空间可以调整,建议不用调整
  • 64 位操作系统中 8G 内存以下的机子或者是静态页面的开发者,建议不用调整
  • 64 位操作系统且内存大于 8G 的,如果是开发大型项目、Java 项目或者是 Android 项目,建议进行修改,经常修改的就是下面三个参数
  • 如果正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA 来解决计算机的卡、慢等问题,这基本上是不可能的,事实上 IntelliJ IDEA 更占用系统资源
1
2
3
4
5
6
7
8
9
10
11
# 默认配置的内容如下,配置文件所在目录:$idea-root/bin/
-Xms128m
-Xmx512m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50

# 配置调整的建议
-Xms128m,16G内存的机器可尝试设置为 -Xms512m,用于设置初始的内存数,提高该值可以提高Java程序的启动速度
-Xmx750m,16G内存的机器可尝试设置为 -Xmx2048m,用于设置最大内存数,提高该值可以减少GC执行的频率,提高程序性能
-XX:ReservedCodeCacheSize=240m,16G内存的机器可尝试设置为 -XX:ReservedCodeCacheSize=1024m,用于保留代码占用的内存容量

IDEA 缓存和索引的清理

IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的文件多少成正比。在 IntelliJ IDEA 创建索引过程中即使编辑了代码也是编译不了、运行不起来的,只能等 IntelliJ IDEA 创建索引完成。IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码提示等操作的速度。但是在某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、蓝屏引起的强制关机,当重新启动 IntelliJ IDEA,很可能 IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使没有断电、蓝屏的情况发生,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少,遇到此类问题可以尝试清理缓存和索引。

idea-clear-cache

idea-clear-cache-2

  • 一般建议点击 “Invalidate and Restart”,这样会清理得比较干净。
  • 清除索引和缓存会使得 IntelliJ IDEA 的 Local History 丢失,所以如果项目没有加入到版本控制,而又需要保留项目文件的历史版本记录,那最好备份下 LocalHistory 目录,该目录位置在: ~/.IntelliJIdea14/system/LocalHistory。
  • 通过上面的方式清除缓存与索引,本质也就是去删除 system 目录下对应的文件而已,所以如果不用上述方法也可以先关闭 IntelliJ IDEA,然后直接删除整个 system 目录。当 IntelliJ IDEA 重启的时候,会自动重新创建新的 system 目录以及项目对应的缓存和索引。

IDEA 的 Database 功能

配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。Database 最大的特性就是针对 Java Web 项目经常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 Domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 Domain 对象等。

IDEA 的配置同步

IntelliJ IDEA 支持安装在不同计算机上的 IntelliJ IDEA(或其他基于 IntelliJ 平台的)产品的不同实例之间共享 IDE 设置。如果安装了多个 IntelliJ IDEA,或者希望在团队成员或公司范围内实施相同的设置,这将非常有用。IntelliJ IDEA 为此提供了 Settings Repository 与 IDE Settings Sync 插件,这两款插件默认情况下处于激活状态,如果插件没有激活,可以在插件配置中找到它们,并设置为可用状态。值得一提的是,目前的同步插件不支持同步已安装插件的信息。共享 IDE 设置的步骤如下:

  • 在任何 Git 托管服务上创建仓库用于存储 IntelliJ IDEA 的配置文件,例如 GitHub 或 Gitlab。
  • 如果使用 Github 作为 托管服务,需要创建 Personal Access Token,创建教程点这里,创建 Access Token 时赋予 repo 的所有权限即可。
  • 在要共享其配置文件的 IntelliJ IDEA 实例里,导航到 File –> Settings Repository,指定上面创建的远程仓库的 URL,根据提示信息填写 Access Token,然后点击 “Overwrite Remote”,将配置文件 Push 到远程仓库。
  • 在要使用远程配置文件的其他 IntelliJ IDEA 实例里,导航到 File –> Settings Repository,指定上面创建的远程仓库的 URL,根据提示信息填写 Access Token,然后点击 “Overwrite Local”,将配置文件 Pull 到本地。如果想同时保留远程设置和本地设置,可以点击 “Merge”,一旦检测到任何冲突,可以在显示的对话框中解决冲突。如果想本地配置覆盖远程配置,可以点击 “Overwrite Remote”。
  • 如果要禁用自动同步配置,导航到:IDEA 配置中心 –> Tools –> Settings Repository,取消勾选 Auto Sync 选项。当需要同步远程的配置时,可以导航到:主菜单 –> VCS –> Sync Settings 来手动同步。

共享 IDE 认证

IntelliJ IDEA 在第一次同步时,将会提示输入访问远程仓库的用户名和密码,建议使用 Access Token 进行 GitHub 身份验证。如果由于某种原因,想要使用用户名和密码而不是 Access Token,或者使用的 Git 托管服务提供商不支持它,建议配置 Git 凭证助手。请注意 MacOS Keychain 是受支持的,这意味着可以在所有基于 IntelliJ 平台的产品之间共享凭据(如果原始 IDE 与请求方 IDE 不同,系统将提示授予访问权限)。

配置只读源

除了 Settings Repository,还可以配置任何数量的其他存储库,其中就包含需要共享的任何类型的设置,包括实时模板、文件模板、方案、部署选项等。这些存储库被称为只读源,因为它们不能被覆盖或合并,仅用作设置源。要配置此类存储库,导航到:IDEA 配置中心 –> Tools –> Settings Repository,单击 “+” 并添加要存储共享设置的 GitHub 仓库的 URL 即可。只读源中的配置进行同步的方法与 Settings Repository 同步的方法相同。