一种减少索引时间的方式是使用共享索引。不像本地构建的常规索引,共享索引一次创建后,后期可以在其他电脑上使用。

其他索引方式,请参考前文(1)

IDEA可以创建并使用共享索引为你的项目代码和你的JDK。无论何时IDEA想要重新索引你的应用程序,它将使用有效的共享索引并对你项目的其余部分创建本地索引。通常,这比对整个项目创建本地索引要快。

Shared indexes for JDKs

IDEA 会对JDK创建本地索引,也会使用有效的JDK共享索引,来加快整个索引过程。IDE内置了3个最新版JDK的预先创建的共享索引。

Shared project indexes

即对项目源码和项目依赖的索引。在一个机器上生成,可以用于其他计算机。这是共享索引相比传统索引的主要优点。

共享索引对大型项目有意义,因为构建时间长。对小项目,建议选择其他索引方式前文(1)

 插件名:Shared Project Indexes bundled  查看插件是否启用:

打开设置,选择Plugins。切换到已安装标签页面,输入“shared project indexes”,确认该插件存在,并且勾选了。apply更改并重启IDE。

开始前检查,创建的机器,以及其他使用索引的机器应该:

1. 相同IDE版本

2. 操作系统可以不同。但是,以前发布的IDEA版本支持的共享索引是特定OS相关的。在本页面左上角切换到你的IDE版本查看文档。

在合并共享索引到你的项目前,你可以计算节约的时间,通过命令行工具。如果对计算结果满意,可以使用索引。对于更复杂的场景,你可以修改  IntelliJ Shared Indexes Tool Example 仓库 ( 外网网址 )的示例脚本。

计算工具运行时,会生成一些文件在你指定的目录:

  1. 下载最新版本的命令行工具,并解压  我上传的工具压缩包
  1. 进入工具目录,执行:

 ./bin/ij-shared-indexes-tool-cli boost  ( uos /  macos )

.\bin\ij-shared-indexes-tool-cli.bat boost(windows )

一些选项的含义

- - ij (必选) 本地IDE路径

- - project (必选)要创建共享索引的项目路径

- - port 本地运行服务程序的端口,默认25561

- - data-directory 指定目录用于存放索引和服务程序数据,默认是./ij-shared-indexes-tool-data.

例如(uos ):

./bin/ij-shared-indexes-tool-cli boost --ij "/home/jetbrains/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/" --project "/home/jetbrains/IdeaProjects/spring-petclinic"  

SourceURL:file:///home/uvw/Documents/Shared indexes.docx

  1. 等待一下,将看到2个时间,使用共享索引和不使用。

共享索引3步走

1. 生成索引

2. 上传到存储(文件服务器,或S3存储)

3. 配置访问

生成索引:

1. 下载最新版的命令行工具,解压。

2. 导航到命令目录,执行:

./bin/ij-shared-indexes-tool-cli indexes( uos  )

选项含义:

- -ij 本地安装IDE路径

- - project 项目路径

- - base-url 完整的索引服务器地址,用于发布共享索引

- - data-directory 存储索引和服务程序数据。默认同前述。你应该从这个目录上传到base-url指定的服务器。

例如,如果你是为产品创建索引,并上传到文件服务器或S3存储:

./bin/ij-shared-indexes-tool-cli indexes --ij "/home/jetbrains/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/" --project "/home/jetbrains/IdeaProjects/spring-petclinic" --base-url "http://your-aws-bucket.s3-website.eu-north-1.amazonaws.com"

例如,如果你是本地测试,并上传到本地服务器:

./bin/ij-shared-indexes-tool-cli indexes --ij "/home/jetbrains/.local/share/JetBrains/Toolbox/apps/intellij-idea-ultimate/" --project "/Users/jetbrains/IdeaProjects/spring_example_project" --base-url "http://127.0.0.1:8080" --data-directory "/home/jetbrains/ij-shared-indexes-tool-data"

3. 一旦索引创建了,你将看到输出信息,指导你复制到项目里的配置文件。

命令完毕,你指定的目录出现2个文件夹server和temp 索引存放在server文件夹。

上传
发布索引

本地测试,可以使用前述命令,带server参数。

./bin/ij-shared-indexes-tool-cli server

例如

./bin/ij-shared-indexes-tool-cli server --port 8080 --server-directory "/home/jetbrains/ij-shared-indexes-tool-data/server"

配置访问

在项目目录,创建文件intellij.yaml ,粘贴前述命令返回的提示信息。

如果项目还没索引,或者你 cleared the system cache (索引系列文章3还没写),IDE就会下载共享索引。默认配置是自动下载,你可以改成手工下载:

* 删除 consents部分,重启项目

* 进入设置 | Tools | Shared Indexes 

* 在 Project Shared Indexes区域选择“先问后下”

索引将下载到 IDE的index/shared_indexes目录。下载过程和结束后,IDE都会提示。

Shared indexes CLI command文档

boost 计算使用共享索引的时间。参数 - -project  - - ij - - port - - data-directory

indexes 生成索引 - - project - - ij - - base-url - - data-directory

server 启动一个本地文件服务 。参数:- - port - - server-directory

version 显示版本。参数 - - ij