該專案使用根據 JetBrains 使用者協議 (https://www.jetbrains.com/legal/docs/toolbox/user/) 許可的二進位捆綁包。
這是適用於 IntelliJ、Android Studio 和 CLion 的 Bazel 外掛程式的早期存取版本。
Bazel 外掛程式會定期從此儲存庫的狀態上傳到 JetBrains Marketplace。請參閱發布標籤以獲取更多資訊。
請參閱我們關於 Bazel IntelliJ 外掛程式的最新社群更新:宣布 Bazel 與 JetBrains 共同維護 IntelliJ IDEA Bazel 外掛程式。
Bazel 專案正在為 Bazel IntelliJ IDE 外掛程式託管一個特別興趣小組 (SIG)。有關 SIG 以及如何加入討論的詳細資訊可以在 SIG 章程中找到。
請參閱有關跨 JetBrains 產品、語言和作業系統的外掛程式支援的文件項目。
IntelliJ 和 CLion 的 Bazel 外掛程式是從此儲存庫的 master 分支建置和發布的。外部維護團隊負責解決 IntelliJ 和 CLion 外掛程式問題和拉取請求。
Android Studio 的 Bazel 外掛程式是由 AOSP 建構和發布的。谷歌分支現已棄用。
儘管此儲存庫中的程式碼和 AOSP 中的程式碼共享相同的結構和核心元件,但它們彼此有所不同。
您可以在 JetBrains Marketplace 中找到我們的插件,或直接從 IDE 中前往Settings -> Plugins -> Marketplace
並蒐索Bazel
來找到我們的插件。
Beta 版本通常會在完整版本發布前 2 週上傳到 Beta 頻道。安裝方法:
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
下,並根據您的產品新增以下 URL 之一。現在,您可以在Settings -> Plugins -> Marketplace
下找到最新的 Beta 版,或者如果您已經安裝了 Bazel 插件,則將其更新為 Beta 版。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 Facet”
若要正確設定遠端開發 (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
之一。或者,您可以將ij_product
設定為直接 IntelliJ 或 CLion 版本,例如clion-2023.2
、 intellij-2023.2
或intellij-ue-2023.2
請注意, intellij
和intellij-ue
之間存在差異。 ue
代表 IntelliJ Ultimate Edition,包含 JavaScript 和 Go 的附加功能。
<IDE>-oss-oldest-stable
和<IDE>-oss-latest-stable
是該插件在給定時間正式相容的兩個 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
檔案將專案匯入 IntelliJ(使用 Bazel 外掛程式)。
您可以透過從命令列調整ij_product
選項或更新.bazelproject
檔案以在build_flags
下指定ij_product
的所需值來建立適用於不同 IDE 版本的插件。
我們為產品版本提供了三個別名;
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 相容性變更。這兩個目錄中的每一個都包含每個受支援的 IDE 版本的子資料夾以及特定於版本的實作。所有類別的外部 API 跨版本必須相同,只是實作可能不同。在此目錄中引入新檔案時,請確保在所有版本中正確複製該檔案。
我們遵循這三種技術來進行重要的不相容更改。
相容
如果適用,優先於適配器和包裝器。我們新增一個僅包含靜態方法和私有建構子的 util 類,並透過靜態方法之一包裝更改的方法。如果變更足夠小,則無需建立新的 util 類,而應將變更新增至 BaseSdkCompat 類別。例:pr/2345
適配器
當我們擴展超類別並且更新其建構函數時使用。我們建立一個新類別來擴展更改後的超類,然後從插件程式碼擴展這個新類別。例:pr/2352
包裝紙
在超類別建構函式中使用新介面時建立。我們建立一個包裝類,根據 SDK 版本包裝並提供舊的或新的接口,並在插件程式碼中使用此包裝類。例:pr/2166
所有相容性變更都必須使用#api{API_VERSION}
進行註釋,例如#api203
。這代表需要該程式碼的最後一個 API 版本,也就是您想要支援的版本之前的版本。這是為了在鋪平舊版本時更容易找到和清理此功能。
相容類別絕不能匯入插件程式碼,我們嘗試使其中的邏輯和程式碼盡可能少。
我們也可以接受貢獻來解決一般問題或添加新功能,但有一些注意事項: