共享索引
共享索引可帮助您减少 GoLand 分析项目所需的时间。 与每次分析项目时本地构建的常规索引不同,共享索引只需生成一次,随后在其他计算机需要时重复使用。
GoLand 可以为您的项目代码生成并使用共享索引。 每当 IDE 需要重新分析您的项目时,它将使用可用的共享索引,并为项目的其余部分构建本地索引。 通常,这比从头开始在本地分析整个项目更快。
安装插件
要使用共享项目索引,必须安装 共享索引插件:
按下 Ctrl+Alt+S 打开设置,然后选择 。
切换到 市场 选项卡,输入
Shared Indexes,然后点击 安装。应用更改并关闭对话框。 如果出现提示,请重启 IDE。
共享项目索引
共享项目索引是为项目源代码及其依赖项生成的。 通过在单台计算机上生成索引并分发到其他计算机,您可以避免在每台机器上重复项目分析过程。 这样,每台计算机都可以受益于预先计算的索引,而无需单独执行昂贵的项目分析操作。 这就是共享索引相较于普通索引的主要优势。
开始之前
构建共享项目索引的计算机以及任何使用这些共享索引的计算机:
应使用相同的 IDE 版本以确保索引兼容性。
可以有不同的操作系统。
在将共享项目索引整合到您的基础架构之前,您可以通过运行命令行工具 评估它们在项目分析中节省的时间。
如果您对结果满意,您可以继续使用 shared indexes。 在更复杂的场景中,您可以自定义来自 IntelliJ Shared Indexes Tool Example 仓库的示例脚本。 例如,在生成共享索引时,您可以使用 JSON 配置文件来禁用 xz 压缩,或启用 gzip 压缩。
评估使用共享索引的项目分析时间
在将共享项目索引用于您的工作流程之前,您可以查看它们能为您节省多少时间。 在评估期间,工具会在您指定的目录中生成一些文件。
下载最新版本的 command-line tool 并解压缩档案。
在命令行中,导航到命令行工具所在目录,并通过运行命令执行二进制文件:
.\bin\ij-shared-indexes-tool-cli.bat boost./bin/ij-shared-indexes-tool-cli boost./bin/ij-shared-indexes-tool-cli boost使用以下选项:
--ij: (必需)本地安装的 IDE 的路径。--project:必需项,项目的路径,您希望为其创建共享索引。--port:运行本地服务器的端口。 默认端口为 25561。--data-directory:存储生成的索引和服务器数据的目录。 默认目录是 ./ij-shared-indexes-tool-data 。
例如:
./bin/ij-shared-indexes-tool-cli boost --ij "/Users/jetbrains/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-1/232.7754.76/PyCharm 2023.2 EAP.app" --project "/Users/jetbrains/PycharmProjects/mySampleProject"例如:
./bin/ij-shared-indexes-tool-cli boost --ij "/Users/jetbrains/Applications/GoLand.app" --project "/Users/jetbrains/gitProjects/serverdemo"等待一段时间。 之后,您将看到有共享索引和无共享索引的项目分析时间。

通过比较时间差,您可以决定是否在您的工作流程中使用共享项目索引。
生成项目索引
使用以下步骤生成索引文件。 在生成索引之后,您需要 将文件上传到文件服务器或兼容 S3 的存储。
下载最新版本的 command-line tool 并解压缩档案。
在命令行中,导航到命令行工具所在目录,并通过命令行运行以下命令来执行二进制文件:
.\bin\ij-shared-indexes-tool-cli.bat indexes./bin/ij-shared-indexes-tool-cli indexes./bin/ij-shared-indexes-tool-cli indexes使用以下选项:
--ij:(必需) 本地安装的 IDE 路径。--project:必需项,项目的路径,您希望为其创建共享索引。--base-url:(必填)索引服务器 URL。 将用于定义共享索引所在完整 URL 的基本 URL。--data-directory:存储生成的索引和服务器数据的目录。 默认目录是 ./ij-shared-indexes-tool-data 。 您应从此目录上载文件到指定在base-url参数中的服务器。
一旦项目索引生成,您将看到包含 在项目中配置共享索引所需信息的消息。
在执行 indexes 命令时,生成索引后,您指定的 目录中会出现两个文件夹: server 和 temp 。 索引文件存储在 server 目录中。
上传文件到存储空间
在您 生成索引后,执行 indexes 命令时,在 您指定的目录中会出现两个文件夹: server 和 temp 。 索引文件存储在 server 目录中。
将共享索引上传到远程存储
将 data 和 项目 文件夹从 server 目录上传到您的文件服务器或 S3-compatible 存储。 存储位置应与使用
base-url参数定义的 URL 基址相同。
本地测试时发布共享索引
在测试共享索引时,您可以使用 server 命令来启动生成文件上的服务器。
在命令行中,导航到命令行工具所在目录,并通过运行命令执行二进制文件:
.\bin\ij-shared-indexes-tool-cli.bat server./bin/ij-shared-indexes-tool-cli server./bin/ij-shared-indexes-tool-cli server使用以下选项:
--port:运行本地服务器的端口。--server-directory:服务器数据的目录。 默认目录是 ./ij-shared-indexes-tool-data/server 。
例如:
.\bin\ij-shared-indexes-tool-cli.bat server --port 8080 --server-directory "C:\Users\jetbrains\ij-shared-indexes-tool-data\server"./bin/ij-shared-indexes-tool-cli server --port 8080 --server-directory "/Users/jetbrains/ij-shared-indexes-tool-data/server"./bin/ij-shared-indexes-tool-cli server --port 8080 --server-directory "/home/jetbrains/ij-shared-indexes-tool-data/server"
配置共享索引的访问权限
一旦项目索引被 上传到文件存储 ,它们就可以下载并应用到另一台计算机上。
在项目目录中,创建一个新文件 intellij.yaml 并将终端中的信息复制到新文件中,例如:

如果项目尚未被分析,或者您已 清除系统缓存 ,IDE 将下载共享索引并使用。
在默认配置中,IDE 将自动下载共享索引。 您可以选择更改此设定,并 手动确认每次下载。
项目索引将下载到 index/shared_indexes 的 IDE 系统目录中。
正在下载索引时,进度会显示在状态栏中。
当一切准备就绪时, 通知 工具窗口中会出现相应的通知。

更改索引的下载方式
在默认配置中,IDE 将自动下载共享索引。 您可以手动确认每次下载。
从 intellij.yaml 文件中删除
consents部分,并重新启动您的项目。在 设置 对话框(Ctrl+Alt+S )中,选择 并在 项目共享索引 区域中选择 下载前询问。

应用更改并关闭对话框。
使已下载的共享索引失效
失效后,GoLand 将下载并使用新的共享索引(如果有)。 否则,将在 项目分析期间本地构建新索引。
从主菜单中选择 。
选择 使已下载的共享索引失效 ,然后点击 失效并重启(R)。
共享索引 CLI 命令参考
- 提升
测量使用项目共享索引后的项目分析加速情况。 选项:
--project:(必需)项目路径。--ij:(必需) 本地安装的 IDE 的路径。--port:运行本地服务器的端口。 默认端口为 25561。--data-directory:用于生成和服务器数据的目录。
- indexes
生成项目共享索引并使其准备好上传。 选项:
--project:(必需)项目路径。--ij:(必需) 本地安装的 IDE 的路径。--base-url:(必填)索引服务器 URL。--data-directory:用于生成和服务器数据的目录。
- server
启动本地索引上的服务器。 选项:
--port:运行本地服务器的端口。 默认端口为 25561。--server-directory:服务器数据的目录。 默认目录是 ./ij-shared-indexes-tool-data/server 。
- 版本
显示共享索引版本信息。 选项:
--ij: (mandatory) 本地安装的 IDE 的路径。。
您可以继续在命令行中使用 shared indexes。 在更复杂的场景中,您可以自定义来自 IntelliJ Shared Indexes Tool Example 仓库的示例脚本。