このプロジェクトは、JetBrains ユーザー契約 (https://www.jetbrains.com/legal/docs/toolbox/user/) に基づいてライセンスされたバイナリ バンドルを使用します。
これは、IntelliJ、Android Studio、および CLion 用の Bazel プラグインの早期アクセス バージョンです。
Bazel プラグインは、このリポジトリの状態から定期的に JetBrains Marketplace にアップロードされます。詳細については、「リリース」タブを参照してください。
Bazel IntelliJ プラグインの最新のコミュニティ更新を参照してください: IntelliJ IDEA Bazel プラグインの Bazel と JetBrains の共同メンテナンスの発表。
Bazel プロジェクトは、Bazel IntelliJ IDE プラグインの Special Interest Group (SIG) をホストしています。 SIG の詳細とディスカッションへの参加方法については、SIG 憲章を参照してください。
JetBrains 製品、言語、オペレーティング システムにわたるプラグインのサポートについては、ドキュメントのエントリを参照してください。
IntelliJ および CLion 用の Bazel プラグインは、このリポジトリのマスター ブランチからビルドおよびリリースされます。外部のメンテナ チームが IntelliJ および CLion プラグインの問題とプル リクエストに対処します。
Android Studio 用の Bazel プラグインは、AOSP から構築およびリリースされます。 Google ブランチは廃止されました。
このリポジトリと AOSP のコードは同じ構造とコア コンポーネントを共有していますが、相互に分岐しています。
JetBrains Marketplace でプラグインを見つけることも、IDE から直接Settings -> Plugins -> Marketplace
に移動してBazel
を検索することで見つけることができます。
ベータ版は通常、完全リリースになる 2 週間前にベータ チャネルにアップロードされます。インストール方法は次のとおりです。
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
でベータ チャネルを IDE に追加し、製品に応じて次の URL のいずれかを追加します。 Settings -> Plugins -> Marketplace
で最新のベータ版を見つけるか、すでにインストールされている場合は Bazel プラグインをベータ版に更新できます。https://plugins.jetbrains.com/plugins/beta/8609
https://plugins.jetbrains.com/plugins/beta/9554
https://plugins.jetbrains.com/plugins/beta/9185
プラグインの機能を理解するには、このビデオを視聴することをお勧めします。
既存の Bazel プロジェクトをインポートするには、 Import Bazel Project
を選択し、プロジェクト インポート ウィザードの指示に従います。
詳細なドキュメントはここから入手できます。
このコメント#4745 (コメント) を読んでください。
Python を正しく強調表示するには、「プロジェクト構造」ウィンドウを開いて「Python ファセット」を設定してください。
リモート開発 (https://www.jetbrains.com/remote-development/) を適切に設定するには、次の手順に従います。
Bazel をインストールし、目的の製品のターゲット*:*_bazel_zip
をビルドします。
bazel build //ijwb:ijwb_bazel_zip --define=ij_product=intellij-ue-oss-latest-stable
bazel build //clwb:clwb_bazel_zip --define=ij_product=clion-oss-latest-stable
bazel build //aswb:aswb_bazel_zip --define=ij_product=android-studio-oss-latest-stable
プロジェクトのルートから。これにより、 bazel-bin/<PRODUCT>/<PRODUCT>_bazel.zip
にプラグイン zip ファイルが作成され、IDE から直接インストールできます。 <PRODUCT>
はijwb, clwb, aswb
のいずれかを指定できます。
バージョンの問題により IDE がプラグインのロードを拒否した場合は、正しいij_product
を指定してください。これらの形式は<IDE>-oss-<VERSION>
です。
<IDE>
intellij-ue, intellij, clion, android-studio
のいずれかです。<VERSION>
oldest-stable, latest-stable, under-dev
のうちの 1 つです。あるいは、 ij_product
IntelliJ または CLion バージョン ( clion-2023.2
、 intellij-2023.2
、またはintellij-ue-2023.2
など) に設定することもできます。 intellij
とintellij-ue
には違いがあることに注意してください。 ue
IntelliJ Ultimate Edition の略で、Go だけでなく JavaScript の追加機能も含まれています。
<IDE>-oss-oldest-stable
と<IDE>-oss-latest-stable
は、プラグインがその時点で正式に互換性がある 2 つの IDE バージョンのエイリアスです。通常、 <IDE>-oss-latest-stable
最後にリリースされた IDE バージョンにマップされますが、 <IDE>-oss-oldest-stable
その直前のバージョンにマップされます (例: <IDE>-oss-oldest-stable=2022.1
および<IDE>-oss-latest-stable=2022.2
。さらに、 <IDE>-oss-under-dev
サポートに向けて取り組んでいる IDE の次期バージョンを表します。現在定義されているすべてのバージョンの完全なマッピングは、 intellij_platform_sdk/build_defs.bzl
にあります。
ijwb/ijwb.bazelproject
ファイルをインポートすることで、(Bazel プラグインを使用して) プロジェクトを IntelliJ にインポートできます。
コマンド ラインからij_product
オプションを調整するか、 .bazelproject
ファイルを更新してbuild_flags
の下のij_product
に必要な値を指定することで、さまざまな IDE バージョン用のプラグインをビルドできます。
製品バージョンには 3 つのエイリアスがあります。
oldest-stable
は、JetBrains 安定チャネルにリリースされた Bazel プラグインによってサポートされる最も古い IDE バージョンです。latest-stable
は、JetBrains 安定チャネルにリリースされた Bazel プラグインによってサポートされる最新の IDE バージョンです。under-dev
現在サポートに向けて取り組んでいる IDE バージョンです。これらのエイリアスの現在対応する IDE バージョンは、ここで見つけることができます。
新しい IDE バージョンをサポートするための貢献を歓迎します。ただし、レビュープロセスをより迅速かつ簡単にするために、次のことをお勧めします。
小規模なプル リクエストのみ受け付けます。プル リクエストが小さいとレビュー コメントが少なくなる傾向があるため、より速く送信できます。また、内部コード ベースとの競合が少なくなる傾向があり、統合が簡素化されます。たとえば、複数の変更を修正する大規模なプル リクエストではなく、特定の互換性のない変更に焦点を当てた個別のプル リクエストを作成する必要があります。
新しいバージョンの開発中も多数の IDE バージョンのサポートを継続するため、提案された変更によって古いバージョンが壊れないことを確認する必要があります。私たちの事前送信パイプラインは、サポートされているすべてのバージョンに対して変更をテストし、何かが壊れていないかどうかを知らせます。
変更をアップストリームにマージしやすくするために、SDK の下位互換性をサポートする手順に従うことをお勧めします。
まず、異なる IDE バージョンで直接動作するようにプラグイン コードを調整することを検討してください。このための戦略の例は次のとおりです。
重要な互換性のない変更については、SDK の互換性を維持するためのコードが sdkcompat ディレクトリと testing/testcompat ディレクトリに存在し、 testing/testcompat
にはテストのみの SDK 互換性変更が保持されます。 2 つのディレクトリのそれぞれには、サポートされている IDE バージョンごとに、バージョン固有の実装を含むサブフォルダーが含まれています。すべてのクラスの外部 API はバージョン間で同じである必要がありますが、実装が異なる場合があるだけです。このディレクトリに新しいファイルを導入するときは、すべてのバージョンにわたってそれを適切に複製するようにしてください。
重要な互換性のない変更に対しては、次の 3 つの手法に従います。
互換性
該当する場合は、アダプターおよびラッパーよりも優先されます。静的メソッドとプライベート コンストラクターのみを含む util-class を追加し、変更されたメソッドを静的メソッドの 1 つでラップします。変更が十分に小さい場合は、新しい util-class を作成する必要はなく、代わりに BaseSdkCompat クラスに変更を追加する必要があります。例: pr/2345
アダプタ
スーパークラスを拡張し、そのコンストラクターが更新されるときに使用されます。変更されたスーパークラスを拡張する新しいクラスを作成し、プラグイン コードからこの新しいクラスを拡張します。例: pr/2352
ラッパー
スーパークラスのコンストラクターで新しいインターフェイスが使用されるときに作成されます。 SDK バージョンに基づいて古いインターフェイスまたは新しいインターフェイスをラップして提供するラッパー クラスを作成し、このラッパー クラスをプラグイン コードで使用します。例: pr/2166
すべての互換性の変更には、 #api{API_VERSION}
、たとえば#api203
を付けてコメントする必要があります。これは、コードを必要とする最後の API バージョン、つまりサポート対象のバージョンより前のバージョンを表します。これは、古いバージョンを舗装するときにこの機能を見つけてクリーンアップしやすくするために必要です。
Compat クラスはプラグイン コードを決してインポートしてはならず、その中のロジックとコードを可能な限り最小限に抑えるよう努めます。
また、一般的な問題を修正したり、いくつかの注意事項とともに新機能を追加したりするための貢献を受け入れることもできる場合があります。