IntelliJ IDEA 2026.1 Help

Bazel プロジェクトビュー

Bazel プロジェクトビューは、IntelliJ IDEA が次の目的で使用する構成です。

  • Bazel ワークスペースのどの部分をインポート / インデックスするかを決定します

  • コードナビゲーション、補完、実行構成、テストなどの機能のために同期する Bazel ターゲットを決定します。

  • IntelliJ IDEA から開始された同期アクションとビルドアクションに Bazel フラグとその他の設定を適用します。

Bazel プロジェクトビューは、1 つまたは複数のサブツリーのみが必要な場合に、Bazel ワークスペース全体をプルするのを防ぎます。 これは Bazel の動作を変更するものではなく、Bazel と IntelliJ IDEA の作業範囲を限定するものです。 これによりパフォーマンスが向上し、プロジェクトの作業が容易になります。

プロジェクトビューの構成

プロジェクトビューは .bazelproject ファイルで設定されます。 プロジェクト内の任意の場所に、このファイルが複数存在する可能性があります。 .bazelproject ファイルの構文については、 .bazelproject ファイル参照 の章を参照してください。

現在アクティブなプロジェクトビューが構成されている場所が不明な場合は、IDE で対応するファイルに移動できます。

プロジェクトビューを選択

ワークスペースに複数のプロジェクトビューがある場合は、切り替えることができます。

  • プロジェクト ツールウィンドウから、 .bazelproject ファイルを右クリックし、 プロジェクトビューを読み込む を選択します。

  • Ctrl+Alt+S 設定から ビルド、実行、デプロイ | ビルドツール | Bazel に移動し、 プロジェクトビューパス フィールドに .bazelproject ファイルへのパスを入力します。

.managed.bazelproject},{

リポジトリにコミットされ、リポジトリのメンテナーが所有する、特別な型の .bazelproject ファイルがあります。 共通のテンプレートを定義するには、 tools/intellij/.managed.bazelproject},{ に配置します。 大規模なリポジトリや短期間のリモート開発環境などのシナリオで、既定の最小限のビューを提供するために使用されます。

2 つのプロジェクトビューの型の相違を簡単にまとめると、次のとおりです。

.managed.bazelproject},{

.bazelproject

目的

組織やリポジトリで中央管理される標準的なプロジェクトビューのテンプレート。

IntelliJ IDEA がインデックス作成やビルドの際に実際に読み込む具体的なプロジェクトビュー。

ロケーション

通常はリポジトリ直下の tools/intellij/.managed.bazelproject},{

チェックアウト先の .bazelbsp/.bazelproject 内に生成されます。

所有者

リポジトリで管理(コードオーナー、ビルドチーム)。

プラグインによって作成される、ユーザー単位・作業コピー単位のアーティファクト。

VCS

VCS にコミット。

通常はコミットしない。生成ファイルとして扱われる。

想定される編集

全員向けの共有テンプレートを変更する場合を除き、ローカルで編集することは基本的にありません。

ここではローカルな微調整が可能ですが、ほかの人と共有されません。

.managed.bazelproject},{ ファイルを含む新しいプロジェクトを開くと、IntelliJ IDEA はそれに基づいて .bazelproject ファイルを生成します。

プロジェクトビューの解決における優先順位は次のとおりです。

  • {project root}/.bazelproject},{

  • managed.bazelproject},{ {project root}/.bazelbsp/.bazelproject},{ にコピーされます(設定 | ビルド、実行、デプロイ | ビルドツール | Bazel},{ で設定可能)。

  • 既定の {project root}/bazelbsp/.bazelproject は、次の設定で作成されます。

    derive_targets_from_directories: true directories: .

.bazelproject ファイル参照

プロジェクトビューファイルは名前付きセクションに分割され、2 つのスペースでインデントされた Python のような形式が使用されます。

ファイルとセクションの構文

  • # 以降から改行までの内容はコメントとして扱われます。

  • セクションヘッダーは行の先頭から始まり、 name: body または name body 形式を使用します。 セクション名の後には、スペースまたはコロンを使用できます。

  • セクション本体は次のセクションヘッダーまで拡張されます。

セクションの種類

すべての名前付きセクションは、次のいずれかのタイプに属します。

  • 単一値セクション: 1 つの値 (Boolean、Int、Path、String)、例:

    derive_targets_from_directories: true import_depth 2
  • リストセクション :複数の値をスペースまたは改行で区切ります。例えば:

    build_flags: --config=ci --cxxopt=-O2
  • 除外可能なリストセクション :複数の値をスペースまたは改行で区切ります。 - で始まる項目は除外されます。 例:

    targets: //app:all -//app:tests

繰り返しセクション

セクションは複数回出現する場合があります。 その場合、以下の解決ルールが適用されます。

  • 単一値セクション: 最後に出現したものが優先されます。

  • リストセクション: セクションは表示順に結合されます。

  • 除外可能なリストセクション: 通常のリストセクションと同様に、含まれるリストと除外されるリストの両方が表示順に結合されます。

インポート

プロジェクトビューは、 インポート および try_import を使用して他のプロジェクトビューをインポートできます。

  • import path/to/file.bazelproject

    必須のインポート。 ファイルが見つからない場合、プロジェクトビューは有効ではないとみなされます。

  • try_import path/to/optional.bazelproject

    オプションのインポート。 ファイルが見つからない場合は、他のプロジェクトビューをインポートしなくても、プロジェクトビューは有効のままです。

IntelliJ IDEA はまず インポート エントリをすべて解析し、次に try_import エントリをファイル内の出現順に解析します。 インポート後、現在のファイル自体のセクションが処理されます。

プロジェクトビューでは複数のインポートを使用できます。 この場合、インポートされたリストセクション(例: targets )はマージされ、単一値セクション(例: bazel_binary )は以前に検出されたセクションを上書きします。

セクション参照

以下に、利用可能なセクションの完全なリストをタイプ別に示します。 セクションタイプとその構文のリストについては、 セクションの種類 の章を参照してください。

除外可能なリストセクション

targets (List<Path>)

インポートに含める Bazel ターゲットのセット。 パッケージの再帰ワイルドカード(/... )をサポートします。 ターゲットの数が増えるほど、IDE の動作が遅くなる可能性があります。

例:

targets: //install/src/main/kotlin/org/jetbrains/bazel/install //executioncontext/projectview/... -//executioncontext/projectview/src/main/kotlin/org/jetbrains/bazel/projectview/parser/...
directories (List<Path>)

Bazel ターゲットにマッピングするディレクトリ。 derive_targets_from_directories と併用することで、指定されたディレクトリをスキャンし、関連するターゲットを自動で検出できます。

例:

directories: install/src/main/kotlin/org/jetbrains/bazel/install executioncontext/projectview/ -executioncontext/projectview/src/main/kotlin/org/jetbrains/bazel/projectview/parser

リストセクション

build_flags (List<String>)

すべての Bazel コマンド呼び出しで渡される Bazel フラグのセット。 デフォルトではフラグは渡されません。

例:

build_flags: --define=ij_product=intellij-latest
sync_flags (List<String>)

同期中に Bazel コマンド呼び出しで渡される Bazel フラグのセット。 デフォルトではフラグは渡されません。

例:

sync_flags: --define=ij_product=intellij-latest
test_flags (List<String>)

将来のリリースでサポートされる予定です。

debug_flags (List<String>)

デバッグモードで bazel run に渡される Bazel フラグのセット。

例:

debug_flags: --cxxopt=-g
enabled_rules (List<String>)

プロジェクトで有効にする外部 Bazel ルールセットを明示的に宣言し、一部のセットアップでは不完全になる可能性がある自動検出をオーバーライドします。

例:

enabled_rules: rules_java rules_kotlin
import_run_configurations (List<Path>)

Bazel 同期中に実行構成としてインポートする XML ファイルのリスト。

例:

import_run_configurations: tools/intellij/run_application.xml tools/intellij/run_tests.xml
python_code_generator_rule_names (List<String>)

どの Bazel ルールの種類を Python コードジェネレーターとして扱うかを指定します。

例:

python_code_generator_rule_names: my_py_codegen_rule another_py_codegen

単一値セクション

bazel_binary (パス)

Bazel のパスです。サーバーで、プロジェクトのビルドや Bazel のクエリの実行などに使用されます。 未指定の場合、サーバーは $PATH 変数のバイナリを使用します。

例:

bazel_binary: /usr/local/bin/bazel
derive_targets_from_directories (ブール値)

ディレクトリ セクションのディレクトリからターゲットを派生させるかどうかを指定します。 デフォルトではターゲットは派生されません(false )が、ディレクトリはプロジェクトビューから除外されません。

例:

derive_targets_from_directories: true
import_depth (整数)

Bazel ターゲットの依存関係をモジュールとしてインポートするレベル数を指定します。 ワークスペースに存在するターゲットのみがインポートされます。 負の値を指定すると、すべての推移的依存関係をインポートできます。 デフォルト値は -1 で、すべての推移的コンテキストが含まれます。

例:

import_depth: 1
allow_manual_targets_sync (ブール値)

手動タグが付けられたターゲットの同期を許可します。 デフォルト(false )では、手動のみのターゲットはスキップされます。

例:

allow_manual_targets_sync: true
ide_java_home_override (パス)

IntelliJ IDEA が Java ターゲットの同期および IDE の操作中に使用する JAVA_HOME をオーバーライドします。 本来は Bazel の Java ツールチェーン/ランタイムから推論される JDK をオーバーライドします。 Bazel 自体は、構成済みのツールチェーンで引き続きビルドされます。このオーバーライドは IDE のみで有効です。

例:

ide_java_home_override: /Users/me/Library/Java/JavaVirtualMachines/jbr-21
shard_sync (ブール値)

Bazel の同期 / ビルドを、単一の同期 / ビルドではなく、シャードと呼ばれる小さなバッチに分割できます。 これにより、Bazel のメモリ不足を回避し、多数のターゲットを同期する際にコマンドラインが長くなりすぎるなどの問題を軽減できます。 Bazel で メモリリークが発生する可能性(英語)があるため、デフォルトは false です。

例:

shard_sync: true
target_shard_size (整数)

シャードに構築するターゲットの数を指定します。 デフォルトは 1000 です

例:

target_shard_size: 500
shard_approach (文字列)

元のターゲットのリストをシャーディングする際に使用する戦略を指定します。 shard_sync と組み合わせて使用します。 デフォルトは QUERY_AND_SHARD です。

可能な値は次のとおりです。

  • EXPAND_AND_SHARD: ワイルドカードターゲットをパッケージターゲットに拡張し、単一のターゲットをクエリし、バッチにシャーディングする

  • QUERY_AND_SHARD: 指定されたターゲットリストから拡張せずに単一のターゲットをクエリし、バッチに分割します。

  • SHARD_ONLY: 展開されていないワイルドカードターゲットをバッチに分割する

例:

shard_approach: EXPAND_AND_SHARD
gazelle_target (文字列)

IntelliJ IDEA が Bazel の同期開始時に Gazelle ターゲットを自動的に実行するかどうかを指定します。 これにより、IntelliJ IDEA がターゲットを収集し、ソースをインデックスする前に、プロジェクトビューに含まれるディレクトリの BUILD ファイルが更新または生成されます。

例:

gazelle_target: //tools/gazelle:gazelle
index_all_files_in_directories (ブール値)

IntelliJ IDEA が、 ディレクトリ セクションにリストされたディレクトリ配下のすべてのファイルを、Bazel ターゲットに属するかどうかに関係なくインデックス化するかどうかを指定します。 これにより、ターゲット以外のソース、ドキュメント、スクリプトの検索とナビゲーションが高速化されますが、モノレポや大規模プロジェクトではインデックス化自体が遅くなり、メモリを大量に消費する可能性があります。 デフォルトは false です。

例:

index_all_files_in_directories: true
import_ijars (ブール値)

JVM ライブラリのインポート時に、完全な jar ではなくインターフェース / ヘッダー jar(ijar) を優先するかどうかを指定します。 インターフェース / ヘッダー jar には、パブリック API クラスのスタブのみが含まれ、完全なバイトコードは含まれません。 これにより、ライブラリ実装へのナビゲーションと一部の IDE 警告の誤検知を犠牲にして、インデックスのサイズが削減され、インポートのパフォーマンスが向上します。 デフォルトは false です。

例:

import_ijars: true
derive_instrumentation_filter_from_targets (ブール値)

インポートされたすべてのターゲットの Bazel パッケージを含む --instrumentation_filter を計算して追加するかどうかを指定します。 false の場合、インストルメンテーションフィルターは追加されません。または、 .bazelrc を使用して指定できます。 例: coverage --instrumentation_filter="^//"。 デフォルトは true です。

例:

derive_instrumentation_filter_from_targets: false
2026 年 3 月 30 日