共享索引
减少索引时间的一种方法是使用共享索引。 与在本地构建的常规索引不同,共享索引只需构建一次,之后在需要时可在其他计算机上重复使用。
GoLand 可以为项目的代码构建并使用共享索引。 每当 GoLand 需要重新索引应用程序时,会使用可用的共享索引,并为项目的其余部分构建本地索引。 通常,这比从头开始为整个应用程序构建本地索引更加高效。
请确保插件已安装
若要使用共享项目索引,必须在设置中启用 Shared Project Indexes 内置插件:
按下 Ctrl+Alt+S 打开设置,然后选择 。
切换到 已安装 选项卡,输入
共享项目索引,并确保勾选其前的复选框。否则,请勾选复选框以启用插件。
应用更改并关闭对话框。 如有提示,请重新启动 IDE。
共享项目索引
共享项目索引是为项目源代码及其依赖项构建的。 通过在一台计算机上生成索引并分发到其他计算机,可以避免在每台机器上重复进行索引过程。 这样,每台计算机都可以使用预先计算的索引而无需单独执行耗时的索引操作。 这是共享索引相较于普通索引的主要优势。
对于大型项目,索引耗时较长,因此使用共享索引是合理的选择,这可以避免相关团队成员的使用不便。 对于较小的项目,建议使用 其他降低索引时间的方法。
开始之前
用于构建项目共享索引的计算机以及使用共享索引的任何其他计算机:
应使用相同的 IDE 版本以确保索引兼容性。
可以使用不同的操作系统。
在将共享项目索引集成到基础设施之前,您可以通过运行命令行工具来 评估其在索引上可节省的时间。
如果结果令人满意,您可以继续使用共享索引。 在更复杂的场景下,您可以自定义 IntelliJ Shared Indexes Tool Example 仓库中的示例脚本。 例如,在生成共享索引时,您可以使用 JSON 配置文件来禁用 xz 压缩,或启用 gzip 压缩。
评估使用共享索引后的索引时间
在将共享项目索引用于工作流之前,您可以预览其为您节省的时间。 评估期间,该工具将在您指定的目录中生成一些文件。
下载最新版本的 命令行工具 并解压归档文件。
在命令行中,导航到命令行工具所在的目录并运行可执行文件:
.\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 的存储位置。
下载最新版的 命令行工具 并解压该归档文件。
在命令行中,导航至命令行工具所在的目录,并通过运行以下命令执行该二进制文件:
.\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 命令时, 您指定的目录中将出现两个文件夹: 服务器 和 临时文件夹 。 索引文件存储在 服务器 目录中。
上传文件到存储位置
在 生成索引后,执行 索引 命令时,在 您指定的目录中将出现两个文件夹: 服务器 和 临时文件夹 。 索引文件存储在 服务器 目录中。
上传共享索引至远程存储
将 数据 和 项目 文件夹从 服务器 目录上传至您的文件服务器或兼容 S3 的存储中。 存储位置的基础 URL 应与生成索引时使用
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 将自动下载共享索引。 您可以选择更改此设置,并 手动确认每次下载。
项目索引将下载至 IDE 系统目录中的 index/shared_indexes 。
索引下载过程中,状态栏中将显示进度。
一切就绪后,您将在 通知 工具窗口中看到相应通知。

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

应用更改并关闭对话框。
共享索引 CLI 命令参考
- boost
测量使用项目共享索引的索引加速情况。 选项:
--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 。
- version
显示共享索引版本信息。 选项:
--ij:(必填) 本地安装的 IDE 路径。。
您可以继续在命令行中使用共享索引。 在更复杂的场景中,您可以自定义 IntelliJ Shared Indexes Tool Example 存储库中的示例脚本。