Proyek ini menggunakan bundel biner yang dilisensikan berdasarkan Perjanjian Pengguna JetBrains (https://www.jetbrains.com/legal/docs/toolbox/user/).
Ini adalah versi akses awal plugin Bazel kami untuk IntelliJ, Android Studio, dan CLion.
Plugin Bazel diunggah ke JetBrains Marketplace secara rutin dari status repositori ini. Lihat tab rilis untuk informasi lebih lanjut.
Silakan lihat pembaruan komunitas terbaru kami untuk plugin Bazel IntelliJ: Mengumumkan pemeliharaan bersama Bazel & JetBrains untuk Plugin IntelliJ IDEA Bazel.
Proyek Bazel menjadi tuan rumah bagi Special Interest Group (SIG) untuk plug-in Bazel IntelliJ IDE. Detail mengenai SIG dan cara mengikuti diskusi dapat dilihat pada piagam SIG.
Lihat entri dokumentasi tentang dukungan plugin di seluruh produk, bahasa, dan sistem operasi JetBrains.
Plugin Bazel untuk IntelliJ dan CLion dibuat dan dirilis dari cabang master repositori ini. Tim pengelola eksternal mengatasi masalah plugin IntelliJ dan CLion serta permintaan penarikan.
Plugin Bazel untuk Android Studio dibuat dan dirilis dari AOSP. Cabang Google sekarang sudah tidak digunakan lagi.
Meskipun kode dalam repositori ini dan di AOSP memiliki struktur dan komponen inti yang sama, keduanya berbeda satu sama lain.
Anda dapat menemukan plugin kami di JetBrains Marketplace atau langsung dari IDE dengan membuka Settings -> Plugins -> Marketplace
, dan mencari Bazel
.
Versi beta biasanya diunggah ke saluran Beta 2 minggu sebelum rilis penuh. Cara menginstalnya:
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
dan tambahkan salah satu URL berikut tergantung pada produk Anda. Anda sekarang dapat menemukan Beta terbaru di Settings -> Plugins -> Marketplace
atau perbarui plugin Bazel ke Beta jika Anda sudah menginstalnya.https://plugins.jetbrains.com/plugins/beta/8609
https://plugins.jetbrains.com/plugins/beta/9554
https://plugins.jetbrains.com/plugins/beta/9185
Kami merekomendasikan menonton video ini untuk membiasakan diri Anda dengan fitur plugin.
Untuk mengimpor proyek Bazel yang sudah ada, pilih Import Bazel Project
, dan ikuti instruksi di panduan impor proyek.
Dokumen terperinci tersedia di sini.
Silakan baca komentar ini #4745 (komentar)
Untuk mendapatkan penyorotan python yang benar, coba buka jendela "Struktur Proyek" dan atur "segi Python" di sana
Untuk menyiapkan Pengembangan Jarak Jauh dengan benar (https://www.jetbrains.com/remote-development/), ikuti langkah-langkah berikut:
Instal Bazel, lalu buat target *:*_bazel_zip
untuk produk yang Anda inginkan:
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
dari akar proyek. Ini akan membuat file zip plugin di bazel-bin/<PRODUCT>/<PRODUCT>_bazel.zip
, yang dapat diinstal langsung dari IDE. <PRODUCT>
dapat berupa salah satu dari ijwb, clwb, aswb
.
Jika IDE menolak memuat plugin karena masalah versi, tentukan ij_product
yang benar. Ini dalam bentuk <IDE>-oss-<VERSION>
dengan
<IDE>
menjadi salah satu dari intellij-ue, intellij, clion, android-studio
,<VERSION>
menjadi salah satu oldest-stable, latest-stable, under-dev
. Sebagai alternatif, Anda dapat mengatur ij_product
untuk mengarahkan versi IntelliJ atau CLion, misalnya clion-2023.2
, intellij-2023.2
atau intellij-ue-2023.2
Perhatikan bahwa ada perbedaan antara intellij
dan intellij-ue
. ue
adalah singkatan dari IntelliJ Ultimate Edition dan berisi fitur tambahan untuk JavaScript serta Go.
<IDE>-oss-oldest-stable
dan <IDE>-oss-latest-stable
adalah alias untuk dua versi IDE yang secara resmi kompatibel dengan plugin pada waktu tertentu. <IDE>-oss-latest-stable
biasanya dipetakan ke versi IDE yang terakhir dirilis, sedangkan <IDE>-oss-oldest-stable
dipetakan ke versi sebelumnya, misalnya <IDE>-oss-oldest-stable=2022.1
dan <IDE>-oss-latest-stable=2022.2
. Selain itu, <IDE>-oss-under-dev
mewakili versi IDE mendatang yang sedang kami upayakan untuk mendukungnya. Pemetaan lengkap dari semua versi yang ditentukan saat ini dapat ditemukan di intellij_platform_sdk/build_defs.bzl
.
Anda dapat mengimpor proyek ke IntelliJ (dengan plugin Bazel) dengan mengimpor file ijwb/ijwb.bazelproject
.
Anda dapat membuat plugin untuk versi IDE yang berbeda dengan menyesuaikan opsi ij_product
baik dari baris perintah atau dengan memperbarui file .bazelproject
untuk menentukan nilai yang diinginkan untuk ij_product
di bawah build_flags
.
Kami memiliki tiga alias untuk versi produk;
oldest-stable
adalah versi IDE tertua yang didukung oleh plugin Bazel yang dirilis ke saluran stabil JetBrains.latest-stable
adalah versi IDE terbaru yang didukung oleh plugin Bazel yang dirilis ke saluran stabil JetBrains.under-dev
adalah versi IDE yang sedang kami upayakan untuk mendukungnya.Versi IDE terbaru dari alias ini dapat ditemukan di sini.
Kami menyambut baik kontribusi untuk mendukung versi IDE baru. Namun, untuk mempercepat dan mempermudah proses peninjauan, kami menyarankan hal berikut:
Kami hanya dapat menerima permintaan penarikan kecil. Permintaan penarikan yang lebih kecil cenderung memiliki lebih sedikit komentar ulasan sehingga dapat dikirimkan lebih cepat. Mereka juga cenderung tidak terlalu bertentangan dengan basis kode internal kami, sehingga menyederhanakan integrasi bagi kami. Misalnya, Anda harus memiliki permintaan penarikan terpisah yang masing-masing berfokus pada perubahan tertentu yang tidak kompatibel daripada memiliki permintaan penarikan besar yang memperbaiki beberapa perubahan.
Karena kami terus mendukung sejumlah versi IDE saat mengerjakan versi baru, Anda perlu memastikan bahwa perubahan yang Anda usulkan tidak merusak versi lama. Saluran pra-pengiriman kami akan menguji perubahan Anda terhadap semua versi yang didukung dan memberi tahu Anda apakah ada kerusakan.
Untuk memfasilitasi penggabungan perubahan Anda ke upstream, sebaiknya ikuti prosedur kami untuk mendukung kompatibilitas mundur SDK.
Pertama-tama pertimbangkan untuk menyesuaikan kode plugin agar langsung berfungsi dengan versi IDE yang berbeda. Contoh strategi untuk ini adalah:
Untuk perubahan tidak kompatibel non-sepele, kode untuk menjaga kompatibilitas SDK berada di direktori sdkcompat dan pengujian/testcompat, tempat testing/testcompat
menyimpan perubahan kompatibilitas SDK khusus pengujian. Masing-masing dari dua direktori berisi sub-folder per versi IDE yang didukung dengan implementasi khusus versi. API luar semua kelas harus sama di seluruh versi, hanya saja implementasinya mungkin berbeda. Saat memperkenalkan file baru di direktori ini, pastikan untuk menduplikasinya dengan benar di semua versi.
Kami mengikuti ketiga teknik ini untuk perubahan yang tidak kompatibel dan tidak sepele.
Kompatibel
Lebih disukai daripada Adaptor dan Pembungkus bila berlaku. Kami menambahkan kelas util dengan hanya metode statis dan konstruktor pribadi dan menggabungkan metode yang diubah dengan salah satu metode statis. Jika perubahannya cukup kecil, Anda tidak perlu membuat kelas util baru dan sebaiknya menambahkan perubahan tersebut ke kelas BaseSdkCompat. Contoh: pr/2345
Adaptor
Digunakan ketika kita memperluas kelas super dan konstruktornya diperbarui. Kami membuat kelas baru yang memperluas kelas super yang diubah, lalu memperluas kelas baru ini dari kode plugin. Contoh: pr/2352
Pembungkus
Dibuat ketika antarmuka baru digunakan dalam konstruktor kelas super. Kami membuat kelas wrapper yang membungkus dan memasok antarmuka lama atau baru berdasarkan versi SDK dan menggunakan kelas wrapper ini dalam kode plugin. Contoh: pr/2166
Semua perubahan compat harus dikomentari dengan #api{API_VERSION}
, misalnya #api203
. Ini mewakili versi API terakhir yang memerlukan kode tersebut, yaitu versi sebelum versi yang ingin Anda dukung. Hal ini diperlukan untuk memudahkan menemukan dan membersihkan fungsi ini saat membuka versi lama.
Kelas Compat tidak boleh mengimpor kode plugin dan kami berusaha menjaga logika dan kode di dalamnya seminimal mungkin.
Kami mungkin juga dapat menerima kontribusi untuk memperbaiki masalah umum atau menambahkan fitur baru dengan beberapa peringatan: