يستخدم هذا المشروع الحزم الثنائية المرخصة بموجب اتفاقية مستخدم JetBrains (https://www.jetbrains.com/legal/docs/toolbox/user/).
هذه نسخة وصول مبكر لمكونات Bazel الإضافية الخاصة بـ IntelliJ وAndroid Studio وCLion.
يتم تحميل البرنامج الإضافي Bazel إلى JetBrains Marketplace بانتظام من حالة هذا المستودع. راجع علامة تبويب الإصدارات لمزيد من المعلومات.
يُرجى الاطلاع على آخر تحديث مجتمعي للمكون الإضافي Bazel IntelliJ: الإعلان عن الصيانة المشتركة لـ Bazel وJetBrains للمكون الإضافي IntelliJ IDEA Bazel.
يستضيف مشروع Bazel مجموعة اهتمامات خاصة (SIG) للمكون الإضافي Bazel IntelliJ IDE. يمكن العثور على تفاصيل حول SIG وكيفية الانضمام إلى المناقشة في ميثاق SIG.
راجع إدخال الوثائق الخاص بدعم البرنامج الإضافي عبر منتجات JetBrains واللغات وأنظمة التشغيل.
تم إنشاء وإصدار مكونات Bazel الإضافية لـ IntelliJ وCLion من الفرع الرئيسي لهذا المستودع. يقوم فريق خارجي من المشرفين بمعالجة مشكلات المكونات الإضافية IntelliJ وCLion وطلبات السحب.
تم إنشاء المكون الإضافي Bazel لنظام Android Studio وإصداره من AOSP. تم الآن إهمال فرع جوجل.
على الرغم من أن التعليمات البرمجية الموجودة في هذا المستودع وفي AOSP تشترك في نفس البنية والمكونات الأساسية، إلا أنها تباعدت عن بعضها البعض.
يمكنك العثور على المكون الإضافي الخاص بنا في JetBrains Marketplace أو مباشرة من IDE بالانتقال إلى Settings -> Plugins -> Marketplace
، والبحث عن Bazel
.
عادةً ما يتم تحميل الإصدارات التجريبية إلى قناة Beta قبل أسبوعين من أن تصبح إصدارات كاملة. طرق تثبيتها:
Settings -> Plugins -> Gear Icon -> Manage Plugin repositories
وأضف أحد عناوين URL التالية اعتمادًا على منتجك. يمكنك الآن العثور على أحدث إصدار تجريبي ضمن Settings -> Plugins -> Marketplace
أو تحديث مكون 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 (تعليق)
من أجل الحصول على تمييز صحيح لبايثون، يرجى محاولة فتح نافذة "بنية المشروع" وتعيين "واجهة بايثون" هناك
لإعداد التطوير عن بعد بشكل صحيح (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
، والذي يمكن تثبيته مباشرة من 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
.
يمكنك استيراد المشروع إلى IntelliJ (باستخدام البرنامج الإضافي Bazel) عبر استيراد ملف ijwb/ijwb.bazelproject
.
يمكنك إنشاء البرنامج المساعد لإصدارات IDE المختلفة عن طريق ضبط خيار ij_product
إما من سطر الأوامر أو عن طريق تحديث ملف .bazelproject
لتحديد القيمة المطلوبة لـ ij_product
ضمن build_flags
.
لدينا ثلاثة أسماء مستعارة لإصدارات المنتج؛
oldest-stable
هو أقدم إصدار من IDE يدعمه البرنامج الإضافي Bazel الذي تم إصداره لقناة JetBrains المستقرة.latest-stable
هو أحدث إصدار من IDE مدعوم من البرنامج الإضافي Bazel الذي تم إصداره لقناة JetBrains المستقرة.under-dev
هو إصدار IDE الذي نعمل حاليًا على دعمه.يمكن العثور على إصدارات IDE الحالية المقابلة لهذه الأسماء المستعارة هنا.
نحن نرحب بالمساهمات لدعم إصدارات IDE الجديدة. ومع ذلك، لجعل عملية المراجعة أسرع وأسهل، نوصي بما يلي:
لا يمكننا قبول سوى طلبات السحب الصغيرة. تميل طلبات السحب الأصغر إلى أن تحتوي على عدد أقل من تعليقات المراجعة وبالتالي يمكن إرسالها بشكل أسرع. كما أنها تميل أيضًا إلى التعارض بشكل أقل مع قاعدة التعليمات البرمجية الداخلية لدينا، مما يبسط عملية التكامل بالنسبة لنا. على سبيل المثال، يجب أن يكون لديك طلبات سحب منفصلة يركز كل منها على تغيير معين غير متوافق بدلاً من طلب سحب كبير لإصلاح طلبات متعددة.
نظرًا لأننا نواصل دعم عدد من إصدارات IDE أثناء العمل على إصدار جديد، فأنت بحاجة للتأكد من أن التغييرات المقترحة لا تؤدي إلى تعطيل الإصدارات القديمة. سيتولى مسار الإرسال المسبق الخاص بنا اختبار تغييراتك مقابل جميع الإصدارات المدعومة ويتيح لك معرفة ما إذا كان قد حدث أي خلل.
لتسهيل دمج تغييراتك في المنبع، نوصي باتباع الإجراء الخاص بنا لدعم التوافق مع الإصدارات السابقة لـ SDK.
فكر أولاً في تعديل كود البرنامج الإضافي بحيث يعمل مباشرة مع إصدارات IDE المختلفة. استراتيجيات المثال لهذا سيكون:
بالنسبة للتغييرات غير المتوافقة غير التافهة، فإن التعليمات البرمجية للحفاظ على توافق SDK موجودة في أدلة sdkcompat وtest/testcompat، حيث يحمل testing/testcompat
تغييرات توافق SDK للاختبار فقط. يحتوي كل من الدليلين على مجلد فرعي لكل إصدار IDE مدعوم مع تطبيقات خاصة بالإصدار. يجب أن تكون واجهة برمجة التطبيقات الخارجية لجميع الفئات هي نفسها عبر الإصدارات، وقد يختلف التنفيذ فقط. عند إدخال ملف جديد في هذا الدليل، تأكد من تكراره بشكل مناسب عبر جميع الإصدارات.
نحن نتبع هذه التقنيات الثلاثة للتغييرات غير المتوافقة غير التافهة.
متوافق
يُفضل استخدام المحول والغلاف عند الاقتضاء. نضيف فئة util بأساليب ثابتة فقط ومنشئ خاص ونغلف الطريقة التي تم تغييرها بإحدى الطرق الثابتة. إذا كان التغيير صغيرًا بدرجة كافية، فلن تحتاج إلى إنشاء فئة استخدام جديدة ويجب إضافة التغيير إلى فئة BaseSdkCompat بدلاً من ذلك. مثال: ص/2345
محول
يتم استخدامه عندما نقوم بتوسيع فئة فائقة ويتم تحديث مُنشئها. نقوم بإنشاء فئة جديدة تعمل على توسيع الفئة الفائقة التي تم تغييرها ثم نقوم بتوسيع هذه الفئة الجديدة من رمز البرنامج المساعد. مثال: ص/2352
إزار
يتم إنشاؤه عند استخدام واجهة جديدة في مُنشئ فئة فائقة. نقوم بإنشاء فئة غلاف تغلف الواجهة القديمة أو الجديدة وتوفرها بناءً على إصدار SDK ونستخدم فئة الغلاف هذه في كود البرنامج الإضافي. مثال: ص/2166
يجب التعليق على جميع التغييرات المتوافقة باستخدام #api{API_VERSION}
، على سبيل المثال #api203
. يمثل هذا الإصدار الأخير من واجهة برمجة التطبيقات (API) الذي يتطلب الرمز، أي الإصدار الذي يسبق الإصدار الذي تهدف إلى دعمه. يعد ذلك ضروريًا لتسهيل العثور على هذه الوظيفة وتنظيفها عند تمهيد الإصدارات القديمة.
يجب ألا تقوم الفئات المتوافقة أبدًا باستيراد كود البرنامج الإضافي ونحاول الحفاظ على المنطق والكود فيها بأقل قدر ممكن.
قد نتمكن أيضًا من قبول المساهمات لإصلاح المشكلات العامة أو إضافة ميزات جديدة مع بعض التحذيرات: