قواعد Java

الإبلاغ عن مشكلة عرض المصدر

القواعد

java_binary

عرض مصدر القاعدة
java_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

لإنشاء أرشيف Java ("ملف jar")، بالإضافة إلى نص برمجي لأداة تضمين اسم القاعدة يستخدم نص هيكل برنامج تضمين مسار فئة يتضمّن، إلى جانب إجراءات أخرى، ملف jar لكل مكتبة يعتمد عليها البرنامج الثنائي. عند تشغيل النص البرمجي هيكل برنامج تضمين، سيكون لأي متغيّر غير فارغ في بيئة JAVABIN الأولوية على الإصدار المحدّد في علامة --java_runtime_version من Bazel.

يقبل البرنامج النصي للتضمين العديد من العلامات الفريدة. راجِع //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt للاطّلاع على قائمة بالعلامات القابلة للضبط ومتغيرات البيئة التي يقبلها برنامج التضمين.

أهداف المخرجات الضمنية

  • name.jar: أرشيف Java يحتوي على ملفات الفئات والموارد الأخرى الخاصة بالتبعيات المباشرة للبرنامج الثنائي.
  • name-src.jar: أرشيف يحتوي على المصادر ("وعاء المصدر").
  • name_deploy.jar: أرشيف Java مناسب للنشر (يتم إنشاؤه فقط عند طلبه بشكل صريح).

    يؤدي إنشاء هدف <name>_deploy.jar لقاعدتك إلى إنشاء ملف وعاء مستقل مع بيان يسمح بتشغيله باستخدام الأمر java -jar أو باستخدام خيار --singlejar في النص البرمجي للتضمين. يُفضَّل استخدام نص برنامج تضمين على java -jar لأنه يجتاز أيضًا علامات JVM وخيارات تحميل المكتبات الأصلية.

    تحتوي حاوية النشر على جميع الفئات التي يمكن أن يعثر عليها برنامج تحميل الفئات الذي بحث في مسار الفئة من النص البرمجي لبرنامج تضمين البرنامج الثنائي من البداية إلى النهاية. ويحتوي أيضًا على المكتبات الأصلية اللازمة للتبعيات. يتم تحميلها تلقائيًا في جهاز JVM في وقت التشغيل.

    إذا حدّد الهدف سمة مشغّل التطبيقات، سيتم تحويل _deploy.jar إلى ملف ثنائي أصلي بدلاً من أن يكون ملف JAR عاديًا. سيتضمن ذلك مشغّل التطبيقات بالإضافة إلى أي تبعيات أصلية (C++ ) لقاعدتك، مرتبطة جميعها ببرنامج ثنائي ثابت. سيتم إلحاق وحدات البايت الخاصة بملف jar الفعلي بهذا البرنامج الثنائي الأصلي، ما يؤدي إلى إنشاء كائن ثنائي ثنائي يحتوي على كل من الملف القابل للتنفيذ ورمز Java. يمكنك تنفيذ ملف jar الناتج مباشرةً كما تفعل في أي برنامج ثنائي أصلي.

  • name_deploy-src.jar: أرشيف يحتوي على المصادر التي تم جمعها من الإغلاق الجزئي للهدف. ستتم مطابقة الفئات في deploy.jar باستثناء الحالات التي لا تحتوي فيها الأواني على وعاء مصدر مطابق.

لا يُسمح بسمة deps في قاعدة java_binary بدون srcs، لذلك تتطلّب القاعدة توفير main_class من قِبل runtime_deps.

يوضح مقتطف الرمز التالي خطأً شائعًا:

java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule"],  # rule that generates that file
)

نفِّذ ما يلي بدلاً من ذلك:

java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.


من الممارسات الجيدة استخدام اسم الملف المصدر الذي يمثّل نقطة الدخول الرئيسية للتطبيق (بدون الإضافة). على سبيل المثال، إذا كانت نقطة الدخول تُسمى Main.java، يمكن أن يكون اسمك Main.
deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

تمثّل هذه السمة قائمة المكتبات الأخرى التي سيتم ربطها بالهدف. يمكنك الاطّلاع على التعليقات العامة حول deps في السمات النموذجية التي تحدّدها معظم قواعد التصميم.
srcs

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة الملفات المصدر التي تتم معالجتها لإنشاء الهدف. هذه السمة مطلوبة دائمًا تقريبًا. يمكنك الاطّلاع على الاستثناءات أدناه.

يتم تجميع ملفات المصدر من النوع .java. في حال استخدام ملفات .java التي تم إنشاؤها، من المستحسن عمومًا إضافة اسم قاعدة الإنشاء هنا بدلاً من اسم الملف نفسه. لا يؤدي ذلك إلى تحسين سهولة القراءة فحسب، بل يجعل القاعدة أكثر مرونة مع التغييرات المستقبلية: إذا كانت قاعدة الإنشاء تنشئ ملفات مختلفة في المستقبل، ستحتاج إلى إصلاح مكان واحد فقط، وهو outs لقاعدة الإنشاء. يجب عدم إدراج قاعدة الإنشاء في deps لأنّها ليست عملية.

يتم فك ضغط ملفات المصدر من النوع .srcjar وتجميعها. (ويفيد ذلك إذا كنت بحاجة إلى إنشاء مجموعة من ملفات .java باستخدام genrule).

القواعد: إذا كانت القاعدة (عادةً genrule أو filegroup) تنشئ أي ملف من الملفات المذكورة أعلاه، سيتم استخدامها بالطريقة نفسها الموضّحة للملفات المصدر.

هذه الوسيطة مطلوبة دائمًا، إلا إذا كانت السمة main_class تحدد فئة في مسار الفئة وقت التشغيل أو إذا حددت الوسيطة runtime_deps.

resources

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بملفات البيانات المراد تضمينها في إناء Java

إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات .class المعتادة التي تم إنتاجها من خلال عملية التجميع. يتم تحديد موقع الموارد داخل ملف الوعاء من خلال بنية المشروع. يبحث Bazel أولاً عن تنسيق الدليل العادي لـ Maven (دليل "src" متبوعًا بتتبع دليل "الموارد"). وإذا لم يتم العثور على هذا الخيار، سيبحث Bazel بعد ذلك عن الدليل العلوي الذي يحمل اسم "javatests" أو "javatests" (لذلك، على سبيل المثال، إذا كان المورد على <workspace root>/x/java/y/java/z، سيكون مسار المورد y/java/z. لا يمكن إلغاء هذا التوجيه، ولكن يمكن استخدام السمة resource_strip_prefix لتحديد دليل بديل محدد لملفات الموارد.

قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.

classpath_resources

قائمة التصنيفات؛ القيمة التلقائية هي [].

يُرجى عدم استخدام هذا الخيار ما لم تكن هناك طريقة أخرى).

قائمة بالموارد التي يجب وضعها في جذر شجرة جافا. والغرض الوحيد من هذه السمة هو إتاحة مكتبات الجهات الخارجية التي تتطلب العثور على مواردها في مسار الفئة على أنّها "myconfig.xml" بالضبط. ولا يُسمح بها إلا على البرامج الثنائية وليس المكتبات، وذلك بسبب خطر التعارضات في مساحات الاسم.

create_executable

قيمة منطقية، غير قابلة للإعداد، والقيمة التلقائية هي True

تم إيقاف العمل به. يمكنك استخدام java_single_jar بدلاً منه.
deploy_env

قائمة التصنيفات؛ القيمة التلقائية هي [].

تمثّل هذه السمة قائمة بأهداف java_binary الأخرى التي تمثّل بيئة النشر لهذا البرنامج الثنائي. اضبط هذه السمة عند إنشاء مكوّن إضافي سيتم تحميله من خلال java_binary آخر.
يؤدي ضبط هذه السمة إلى استبعاد جميع التبعيات من مسار فئة وقت التشغيل (ووعاء النشر) لهذا البرنامج الثنائي الذي تتم مشاركته بين هذا البرنامج الثنائي والأهداف المحدّدة في deploy_env.
deploy_manifest_lines

قائمة السلاسل، القيمة التلقائية هي [].

هذه هي قائمة أسطر يمكن إضافتها إلى ملف META-INF/manifest.mf الذي تم إنشاؤه لهدف *_deploy.jar. لا يمكن استبدال محتوى هذه السمة "إنشاء متغيّر".
javacopts

قائمة السلاسل، القيمة التلقائية هي [].

خيارات برنامج تجميع إضافية لهذه المكتبة. يخضع هذا الخيار للاستبدال "MakeVariable" "وإنشاء متغيّر" وترميز شل Bourne.

يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي.

jvm_flags

قائمة السلاسل، القيمة التلقائية هي [].

قائمة بالعلامات المراد تضمينها في النص البرمجي للتضمين الذي تم إنشاؤه لتشغيل هذا البرنامج الثنائي. يخضع هذا الإجراء للاستبدال $(location) و"إنشاء متغيّر"، وإنشاء رمز مميّز لـ Bourne Shell.

يشتمل نص برنامج تضمين لبرنامج Java الثنائي على تعريف ClassPATH (للعثور على جميع الأواني التابعة) ويستدعي مترجم Java الصحيح. يتضمّن سطر الأوامر الذي أنشأه النص البرمجي للتضمين اسم الفئة الرئيسية متبوعًا بعلامة "$@" حتى تتمكّن من تمرير الوسيطات الأخرى بعد اسم الفئة. ومع ذلك، يجب تحديد الوسيطات المخصصة للتحليل باستخدام جهاز JVM قبل اسم الفئة في سطر الأوامر. تتم إضافة محتوى jvm_flags إلى النص البرمجي للتضمين قبل إدراج اسم الفئة.

يُرجى العلم أنّ هذه السمة ليس لها أي تأثير في مخرجات *_deploy.jar.

launcher

التصنيف، القيمة التلقائية هي None.

حدِّد برنامجًا ثنائيًا سيتم استخدامه لتشغيل برنامج Java بدلاً من برنامج bin/java العادي المضمّن في JDK. يجب أن يكون الاستهداف cc_binary. يمكن تحديد أي cc_binary ينفّذ Java Invocation API كقيمة لهذه السمة.

سيستخدم Bazel تلقائيًا مشغّل JDK العادي (bin/java أو java.exe).

لا تؤثر علامة Bazel ذات الصلة --java_launcher إلا في استهدافات java_binary وjava_test التي لم تحدّد سمة launcher.

تجدُر الإشارة إلى أنّه سيتم إنشاء التبعيات الأصلية (C++ وSWIG وJNI) بشكل مختلف استنادًا إلى ما إذا كنت تستخدم مشغّل تطبيقات JDK أو مشغّل تطبيقات آخر:

  • إذا كنت تستخدم مشغّل تطبيقات JDK العادي (التلقائي)، يتم إنشاء التبعيات الأصلية كمكتبة مشتركة باسم {name}_nativedeps.so، حيث يكون {name} هو السمة name لقاعدة java_binary هذه. لا تتم إزالة الرموز غير المستخدمة بواسطة الرابط في هذه الإعدادات.
  • إذا كنت تستخدم أي مشغّل تطبيقات آخر، يتم ربط التبعيات الأصلية (C++ ) بشكل ثابت في برنامج ثنائي باسم {name}_nativedeps، حيث يكون {name} هو السمة name لقاعدة java_binary. في هذه الحالة، سيزيل الرابط أي رمز يعتبره غير مستخدم من البرنامج الثنائي الناتج، ما يعني أنّه لا يمكن ربط أي رمز C++ يتم الوصول إليه فقط من خلال JNI ما لم يحدّد هدف cc_library هذا alwayslink = 1.

عند استخدام أي مشغّل غير مشغّل تطبيقات JDK التلقائي، يتغير تنسيق إخراج *_deploy.jar. راجِع مستندات java_binary الرئيسية للحصول على التفاصيل.

main_class

سلسلة، القيمة التلقائية هي "".

اسم الصف مع طريقة main() لاستخدامها كنقطة دخول. إذا كانت القاعدة تستخدم هذا الخيار، لن تحتاج إلى قائمة srcs=[...]. وبالتالي، باستخدام هذه السمة، يمكن للمرء إنشاء ملف قابل للتنفيذ من مكتبة Java التي تتضمّن طريقة main() واحدة أو أكثر.

قيمة هذه السمة هي اسم فئة وليس ملف مصدر. يجب أن تكون الفئة متاحة في وقت التشغيل: وقد يتم تجميعها باستخدام هذه القاعدة (من srcs) أو مقدَّمة من خلال تبعيات مباشرة أو عابرة (من خلال runtime_deps أو deps). وفي حال عدم توفّر الفئة، سيتعذّر تشغيل البرنامج الثنائي في وقت التشغيل، ولن يتم التحقّق من وقت الإصدار.

plugins

قائمة التصنيفات؛ القيمة التلقائية هي [].

المكوّنات الإضافية لأداة التحويل البرمجي لـ Java التي يتم تشغيلها في وقت التجميع. سيتم تشغيل كل سمة java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins. سيتم تضمين الموارد التي أنشأَتها المكوّن الإضافي في الوعاء الناتج لهذه القاعدة.
resource_jars

قائمة التصنيفات؛ القيمة التلقائية هي [].

مهملة: يمكنك استخدام java_import وdeps أو runtime_deps بدلاً من ذلك.
resource_strip_prefix

سلسلة، القيمة التلقائية هي "".

بادئة المسار التي ستتم إزالتها من موارد Java.

وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة resources. حدث خطأ أن ملف المورد لا يكون ضمن هذا الدليل. وإذا لم يتم تحديده (الخيار التلقائي)، يتم تحديد مسار ملف الموارد وفقًا للمنطق نفسه المستخدَم في حزمة Java للملفات المصدر. على سبيل المثال، سيتم وضع ملف المصدر في stuff/java/foo/bar/a.txt على foo/bar/a.txt.

runtime_deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

توفير المكتبات للبرنامج الثنائي النهائي أو الاختبار في وقت التشغيل فقط. وكما هو الحال مع deps العادي، ستظهر هذه السمات في مسار فئة وقت التشغيل، ولكن على عكسها، لن تظهر في مسار فئة وقت التجميع. ويجب سرد التبعيات المطلوبة في وقت التشغيل فقط هنا. يجب أن تتجاهل أدوات تحليل التبعية الأهداف التي تظهر في كلٍّ من runtime_deps وdeps.
stamp

عدد صحيح، والعدد التلقائي هو -1.

ما إذا كان سيتم ترميز معلومات الإصدار في البرنامج الثنائي. القيم المتاحة:
  • stamp = 1: يجب ختم معلومات الإصدار دائمًا في البرنامج الثنائي، حتى في إصدارات --nostamp. يجب تجنُّب هذا الإعداد، لأنّه من المحتمل أن يؤدي إلى إيقاف التخزين المؤقت عن بُعد للبرنامج الثنائي وأي إجراءات تنزيل تعتمد عليه.
  • stamp = 0: استبدِل معلومات الإصدار دائمًا بقيم ثابتة. وهذا يوفر ذاكرة تخزين مؤقت جيدة لنتائج الإصدار.
  • stamp = -1: تتحكّم العلامة --[no]stamp في إمكانية تضمين معلومات الإصدار.

ولا تتم إعادة إنشاء البرامج الثنائية المختومة ما لم تتغير تبعياتها.

use_launcher

منطقي، القيمة التلقائية هي True

ما إذا كان يجب أن يستخدم البرنامج الثنائي مشغّل تطبيقات مخصّصًا

في حال ضبط هذه السمة على "خطأ"، سيتم تجاهل سمة مشغّل التطبيقات والعلامة --java_launcher ذات الصلة لهذا الهدف.

use_testrunner

منطقي، القيمة التلقائية هي False

استخدِم فئة برنامج الاختبار (تلقائيًا com.google.testing.junit.runner.BazelTestRunner) كنقطة دخول رئيسية لبرنامج Java، وقدِّم فئة الاختبار إلى مستخدم الاختبار كقيمة للسمة bazel.test_suite في النظام. يمكنك استخدام هذا الإجراء لإلغاء السلوك التلقائي، وهو استخدام برنامج التشغيل التجريبي لقواعد java_test، وليس لقواعد java_binary. من غير المحتمل أن تحتاج إلى إجراء ذلك. تُستخدم إحدى هذه القواعد لقواعد AllTest التي يتم استدعاؤها من خلال قاعدة أخرى (لإعداد قاعدة بيانات قبل إجراء الاختبارات، على سبيل المثال). يجب الإعلان عن القاعدة AllTest باعتبارها java_binary، ولكن يجب استخدام برنامج تشغيل الاختبار كنقطة دخول رئيسية لها. يمكن استبدال اسم فئة عدّاء الاختبار باستخدام السمة main_class.

java_import

عرض مصدر القاعدة
java_import(name, deps, data, add_exports, add_opens, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, toolchains, visibility)

تسمح هذه القاعدة باستخدام ملفات .jar المجمَّعة مسبقًا كمكتبات لقاعدتَي java_library وjava_binary.

أمثلة


    java_import(
        name = "maven_model",
        jars = [
            "maven_model/maven-aether-provider-3.2.3.jar",
            "maven_model/maven-model-3.2.3.jar",
            "maven_model/maven-model-builder-3.2.3.jar",
        ],
    )

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

تمثّل هذه السمة قائمة المكتبات الأخرى التي سيتم ربطها بالهدف. راجِع java_library.deps.
data

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة الملفات التي تحتاج إليها هذه القاعدة في وقت التشغيل.
add_exports

قائمة السلاسل، القيمة التلقائية هي [].

يتم السماح لهذه المكتبة بالوصول إلى module أو package المحدّدَين.

ويتجاوب هذا مع علامات javac وJVM --add-exports=.

add_opens

قائمة السلاسل، القيمة التلقائية هي [].

يمكنك السماح لهذه المكتبة بالوصول بشكل انعكاسي إلى module أو package.

ويتجاوب هذا مع علامات javac وJVM --add-opens=).

constraints

قائمة السلاسل، القيمة التلقائية هي [].

قيود إضافية تم فرضها على هذه القاعدة كمكتبة Java.
exports

قائمة التصنيفات؛ القيمة التلقائية هي [].

الأهداف المطلوب إتاحتها لمستخدمي هذه القاعدة. راجِع java_library.exports.
jars

قائمة التصنيفات، مطلوبة

قائمة ملفات JAR المقدَّمة لأهداف Java التي تعتمد على هذا الهدف

منطقي، القيمة التلقائية هي False

استخدِم هذه المكتبة للتجميع فقط، وليس في وقت التشغيل. يكون مفيدًا إذا سيتم توفير المكتبة في بيئة التشغيل أثناء التنفيذ. ومن أمثلة المكتبات مثل هذه واجهات برمجة تطبيقات IDE لمكونات IDE الإضافية أو tools.jar لأي شيء يتم تشغيله على JDK قياسي.
proguard_specs

قائمة التصنيفات؛ القيمة التلقائية هي [].

الملفات التي سيتم استخدامها كمواصفات Proguard. سيصف هذا مجموعة المواصفات التي سيستخدمها Proguard. وفي حال تحديدها، ستتم إضافتها إلى أي هدف android_binary استنادًا إلى هذه المكتبة. يجب أن تحتوي الملفات المضمّنة هنا على قواعد حازمة فقط، وهي -dontnote و-dontwarn وassumenosideeffects والقواعد التي تبدأ بـ -keep. ولا يمكن أن تظهر الخيارات الأخرى إلا في proguard_specs الخاص بـ android_binary، لضمان عمليات دمج غير تلقائية.
runtime_deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

توفير المكتبات للبرنامج الثنائي النهائي أو الاختبار في وقت التشغيل فقط. راجِع java_library.runtime_deps.
srcjar

التصنيف، القيمة التلقائية هي None.

ملف JAR يحتوي على رمز المصدر لملفات JAR المجمّعة.

java_library

عرض مصدر القاعدة
java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)

تجمّع هذه القاعدة المصادر وتربطها في ملف .jar.

المخرجات الضمنية

  • libname.jar: أرشيف Java يحتوي على ملفات الصف.
  • libname-src.jar: أرشيف يحتوي على المصادر ("وعاء المصدر").

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

تمثّل هذه السمة قائمة المكتبات المطلوب ربطها بهذه المكتبة. يمكنك الاطّلاع على التعليقات العامة حول deps في القسم السمات المعتادة التي تحدّدها معظم قواعد التصميم.

ستكون الأواني التي تم إنشاؤها بواسطة قواعد java_library المدرَجة في deps ضمن مسار فئة وقت التجميع لهذه القاعدة. بالإضافة إلى ذلك، سيتم إغلاق الملف الشخصي من deps وruntime_deps وexports في مسار الصف وقت التشغيل.

وفي المقابل، يتم تضمين الأهداف في السمة data في ملفات التشغيل، ولكن ليس في مسار التجميع في وقت التجميع أو مسار فئة وقت التشغيل.

srcs

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة الملفات المصدر التي تتم معالجتها لإنشاء الهدف. هذه السمة مطلوبة دائمًا تقريبًا. يمكنك الاطّلاع على الاستثناءات أدناه.

يتم تجميع ملفات المصدر من النوع .java. في حال استخدام ملفات .java التي تم إنشاؤها، ننصح عمومًا بإضافة اسم قاعدة الإنشاء هنا بدلاً من اسم الملف نفسه. لا يؤدي ذلك إلى تحسين سهولة القراءة فحسب، بل يجعل القاعدة أكثر مرونة مع التغييرات المستقبلية: إذا كانت قاعدة الإنشاء تنشئ ملفات مختلفة في المستقبل، ستحتاج إلى إصلاح مكان واحد فقط، وهو outs لقاعدة الإنشاء. يجب ألّا تُدرِج قاعدة الإنشاء في deps لأنّها عملية بيئة مستقلة.

يتم فك ضغط ملفات المصدر من النوع .srcjar وتجميعها. (يكون هذا الإجراء مفيدًا إذا كنت بحاجة إلى إنشاء مجموعة من ملفات .java باستخدام genrule).

القواعد: إذا كانت القاعدة (عادةً genrule أو filegroup) تنشئ أيًا من الملفات المذكورة أعلاه، سيتم استخدامها بالطريقة نفسها كما هو موضّح للملفات المصدر.

يتم التعامل مع ملفات المصدر من النوع .properties كموارد.

ويتم تجاهل جميع الملفات الأخرى ما دام هناك ملف واحد على الأقل من نوع الملف الموصوف أعلاه. أو سيتم عرض رسالة خطأ.

هذه الوسيطة مطلوبة دائمًا تقريبًا، إلا إذا حددت الوسيطة runtime_deps.

data

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بالملفات التي تحتاج إليها هذه المكتبة في وقت التشغيل يمكنك الاطّلاع على التعليقات العامة حول data في القسم السمات المعتادة التي تحدّدها معظم قواعد التصميم.

عند إنشاء java_library، لا يضع Bazel هذه الملفات في أي مكان. وإذا تم إنشاء ملفات data، سينشئها Bazel. عند إنشاء اختبار يعتمد على java_library، ينسخ Bazel ملفات data أو يربطها في منطقة ملفات التشغيل.

resources

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بملفات البيانات المراد تضمينها في إناء Java

قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.

إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات .class المعتادة التي تم إنتاجها من خلال عملية التجميع. يتم تحديد موقع الموارد داخل ملف الوعاء من خلال هيكل المشروع. يبحث Bazel أولاً عن تنسيق الدليل القياسي لـ Maven (دليل "src" متبوعًا بتتبع دليل "الموارد"). وإذا لم يتم العثور على هذا الخيار، سيبحث Bazel بعد ذلك عن الدليل العلوي المسمى "java" أو "javatests" (مثلاً، إذا كان المورد متوفرًا في <workspace root>/x/java/y/java/z، فسيكون مسار المورد y/java/z.) لا يمكن إلغاء هذا التوجيه، ولكن يمكن استخدام السمة resource_strip_prefix لتحديد دليل بديل محدد لملفات الموارد.

add_exports

قائمة السلاسل، القيمة التلقائية هي [].

يتم السماح لهذه المكتبة بالوصول إلى module أو package المحدّدَين.

ويتجاوب هذا مع علامات javac وJVM --add-exports=.

add_opens

قائمة السلاسل، القيمة التلقائية هي [].

يمكنك السماح لهذه المكتبة بالوصول بشكل انعكاسي إلى module أو package.

ويتجاوب هذا مع علامات javac وJVM --add-opens=).

bootclasspath

التصنيف، القيمة التلقائية هي None.

واجهة برمجة التطبيقات محظورة، يُرجى عدم استخدامها!
exported_plugins

قائمة التصنيفات؛ القيمة التلقائية هي [].

هذه السمة تعرض قائمة java_plugin (مثل معالِجات التعليقات التوضيحية) المطلوب تصديرها إلى المكتبات التي تعتمد بشكل مباشر على هذه المكتبة.

سيتم تطبيق قائمة java_plugin المحدَّدة على أي مكتبة تعتمد مباشرةً على هذه المكتبة، تمامًا كما لو كانت تلك المكتبة قد أعلنت صراحةً عن هذه التصنيفات في plugins.

exports

قائمة التصنيفات؛ القيمة التلقائية هي [].

المكتبات التي تم تصديرها

أما قواعد إدراج البيانات هنا، فستتيحها لقواعد الوالدَين، كما لو كان الوالدان يعتمدان بشكل صريح على هذه القواعد. ولا ينطبق ذلك على deps العادية (غير المصدرة).

ملخّص: يمكن للقاعدة X الوصول إلى الرمز في Y إذا كان هناك مسار تبعية بينها يبدأ بحافة deps متبوعة بصفر أو أكثر من حواف exports. لنلقِ نظرة على بعض الأمثلة لتوضيح ذلك.

افترض أنّ القيمة أ تعتمد على الرقم ب والقيمة ب وتعتمد على المعيار ج. في هذه الحالة، تُعدّ حرف C تبعية مستمرة للنوع A، وبالتالي سيؤدي تغيير مصادر حرف C وإعادة إنشاء العنصر A إلى إعادة هيكلة كل العناصر بشكل صحيح. ومع ذلك، لن يتمكن A من استخدام الفئات في C. وللسماح بذلك، يجب أن يذكر حرف C في السمة deps، أو أن يسهِّل حرف B على الحرف A (وأي شيء قد يعتمد على A) من خلال إدراج C في السمة exports (ب) الخاصة بها.

يكون إغلاق المكتبات التي تم تصديرها متاحًا لجميع القواعد الرئيسية المباشرة. ولنأخذ مثالاً مختلفًا قليلاً: تعتمد "أ" على "ب" وتعتمد "ب" على "ج" و"د"، كما تصدر أيضًا "ج" وليس "د". الآن بإمكان "أ" الوصول إلى "ج" ولكن ليس إلى "د". والآن، إذا صدّرت C وD بعض المكتبات، C وD" على التوالي، بإمكان A الوصول إلى C فقط وليس D.

ملاحظة مهمة: القاعدة التي تم تصديرها ليست تبعية عادية. الالتزام بالمثال السابق، إذا صدّرت B باستخدام C أيضًا وأرادت استخدام C، يجب أيضًا إدراجها في deps الخاصة بها.

javabuilder_jvm_flags

قائمة السلاسل، القيمة التلقائية هي [].

واجهة برمجة التطبيقات محظورة، يُرجى عدم استخدامها!
javacopts

قائمة السلاسل، القيمة التلقائية هي [].

خيارات برنامج تجميع إضافية لهذه المكتبة. يخضع هذا الخيار لاستبدال "MakeVariable" وترميز شل Bourne.

يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي.

منطقي، القيمة التلقائية هي False

ما إذا كان يجب استخدام هذه المكتبة للتجميع فقط وليس في وقت التشغيل يكون مفيدًا إذا تم توفير المكتبة بواسطة بيئة وقت التشغيل أثناء التنفيذ. ومن أمثلة هذه المكتبات واجهات برمجة تطبيقات IDE لمكونات IDE الإضافية أو tools.jar لأي شيء يتم تشغيله على JDK عادي.

يُرجى العلم أنّ neverlink = 1 لا يمنع برنامج التجميع من تضمين مواد من هذه المكتبة في أهداف تجميع تعتمد عليها، على النحو الذي تسمح به مواصفات لغة Java (على سبيل المثال، ثوابت static final للنوع String أو للأنواع الأساسية). وبالتالي، فإنّ حالة الاستخدام المفضّلة هي عندما تكون مكتبة وقت التشغيل مطابقة لمكتبة التجميع.

إذا كانت مكتبة وقت التشغيل مختلفة عن مكتبة التجميعات، عليك التأكّد من اختلافها فقط في الأماكن التي تحظر فيها لغة البرمجة JLS تضمين المبرمجات البرمجية (ويجب أن تتوفّر في جميع الإصدارات المستقبلية من JLS).

plugins

قائمة التصنيفات؛ القيمة التلقائية هي [].

المكوّنات الإضافية لأداة التحويل البرمجي لـ Java التي يتم تشغيلها في وقت التجميع. سيتم تشغيل كل سمة java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins. سيتم تضمين الموارد التي تم إنشاؤها بواسطة المكون الإضافي في الوعاء الناتج لهذه القاعدة.
proguard_specs

قائمة التصنيفات؛ القيمة التلقائية هي [].

الملفات التي سيتم استخدامها كمواصفات Proguard. سيصف هذا مجموعة المواصفات التي سيستخدمها Proguard. وفي حال تحديدها، ستتم إضافتها إلى أي هدف android_binary استنادًا إلى هذه المكتبة. يجب أن تحتوي الملفات المضمّنة هنا على قواعد حازمة فقط، وهي -dontnote و-dontwarn وassumenosideeffects والقواعد التي تبدأ بـ -keep. ولا يمكن أن تظهر الخيارات الأخرى إلا في proguard_specs الخاص بـ android_binary، لضمان عمليات دمج غير تلقائية.
resource_strip_prefix

سلسلة، القيمة التلقائية هي "".

بادئة المسار التي ستتم إزالتها من موارد Java.

وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة resources. حدث خطأ أن ملف المورد لا يكون ضمن هذا الدليل. في حال عدم تحديد ذلك (الخيار التلقائي)، يتم تحديد مسار ملف الموارد وفقًا للمنطق نفسه المستخدَم في حزمة Java للملفات المصدر. على سبيل المثال، سيظهر ملف المصدر في stuff/java/foo/bar/a.txt على foo/bar/a.txt.

runtime_deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

توفير المكتبات للبرنامج الثنائي النهائي أو الاختبار في وقت التشغيل فقط. وكما هو الحال في deps العادي، ستظهر هذه السمات في مسار فئة وقت التشغيل، ولكن بخلافها، لن تظهر في مسار فئة وقت التجميع. يجب سرد التبعيات المطلوبة في وقت التشغيل فقط هنا. يجب أن تتجاهل أدوات تحليل التبعية الأهداف التي تظهر في كلٍّ من runtime_deps وdeps.

java_lite_proto_library

عرض مصدر القاعدة
java_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

ينشئ java_lite_proto_library رمز Java من .proto ملف.

يجب أن توجّه العلامة deps إلى قواعد proto_library .

مثال:


java_library(
    name = "lib",
    runtime_deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة قواعد proto_library لإنشاء رمز Java.

java_proto_library

عرض مصدر القاعدة
java_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

ينشئ java_proto_library رمز Java من .proto ملف.

يجب أن توجّه العلامة deps إلى قواعد proto_library .

مثال:


java_library(
    name = "lib",
    runtime_deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة قواعد proto_library لإنشاء رمز Java.

java_test

عرض مصدر القاعدة
java_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, plugins, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)

تجمع قاعدة java_test() اختبار JavaScript. الاختبار هو برنامج تضمين ثنائي حول التعليمة البرمجية للاختبار. يتم استدعاء الطريقة الرئيسية لجهة تشغيل الاختبار بدلاً من الفئة الرئيسية التي يتم تجميعها.

أهداف المخرجات الضمنية

  • name.jar: أرشيف Java
  • name_deploy.jar: أرشيف Java مناسب للنشر. (لا يتم إنشاؤها إلا إذا تم طلبها صراحةً.) لمعرفة مزيد من التفاصيل، يمكنك الاطّلاع على وصف ناتج name_deploy.jar من java_binary.

راجِع القسم الذي يتناول java_binary() وسيطات. تتيح هذه القاعدة أيضًا جميع السمات المشتركة لجميع قواعد الاختبار (*_test).

أمثلة



java_library(
    name = "tests",
    srcs = glob(["*.java"]),
    deps = [
        "//java/com/foo/base:testResources",
        "//java/com/foo/testing/util",
    ],
)

java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":tests",
        "//util/mysql",
    ],
)

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

تمثّل هذه السمة قائمة المكتبات الأخرى التي سيتم ربطها بالهدف. يمكنك الاطّلاع على التعليقات العامة حول deps في القسم السمات المعتادة التي تحدّدها معظم قواعد التصميم.
srcs

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة الملفات المصدر التي تتم معالجتها لإنشاء الهدف. هذه السمة مطلوبة دائمًا تقريبًا. يمكنك الاطّلاع على الاستثناءات أدناه.

يتم تجميع ملفات المصدر من النوع .java. في حال استخدام ملفات .java التي تم إنشاؤها، ننصح عمومًا بإضافة اسم قاعدة الإنشاء هنا بدلاً من اسم الملف نفسه. لا يؤدي ذلك إلى تحسين سهولة القراءة فحسب، بل يجعل القاعدة أكثر مرونة مع التغييرات المستقبلية: إذا كانت قاعدة الإنشاء تنشئ ملفات مختلفة في المستقبل، ستحتاج إلى إصلاح مكان واحد فقط، وهو outs لقاعدة الإنشاء. يجب ألّا تُدرِج قاعدة الإنشاء في deps لأنّها عملية بيئة مستقلة.

يتم فك ضغط ملفات المصدر من النوع .srcjar وتجميعها. (يكون هذا الإجراء مفيدًا إذا كنت بحاجة إلى إنشاء مجموعة من ملفات .java باستخدام genrule).

القواعد: إذا كانت القاعدة (عادةً genrule أو filegroup) تنشئ أيًا من الملفات المذكورة أعلاه، سيتم استخدامها بالطريقة نفسها كما هو موضّح للملفات المصدر.

هذه الوسيطة مطلوبة دائمًا، إلا إذا حددت السمة main_class فئة في مسار الفئة في وقت التشغيل أو إذا حددت الوسيطة runtime_deps.

data

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بالملفات التي تحتاج إليها هذه المكتبة في وقت التشغيل يمكنك الاطّلاع على التعليقات العامة حول data في السمات النموذجية التي تحدّدها معظم قواعد التصميم.
resources

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بملفات البيانات المراد تضمينها في إناء Java

قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.

إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات .class المعتادة التي تم إنتاجها من خلال عملية التجميع. يتم تحديد موقع الموارد داخل ملف الوعاء من خلال هيكل المشروع. يبحث Bazel أولاً عن تنسيق الدليل القياسي لـ Maven (دليل "src" متبوعًا بتتبع دليل "الموارد"). وإذا لم يتم العثور على هذا الخيار، سيبحث Bazel بعد ذلك عن الدليل العلوي المسمى "java" أو "javatests" (مثلاً، إذا كان المورد متوفرًا في <workspace root>/x/java/y/java/z، فسيكون مسار المورد y/java/z.) لا يمكن إلغاء هذا التوجيه، ولكن يمكن استخدام السمة resource_strip_prefix لتحديد دليل بديل محدد لملفات الموارد.

add_exports

قائمة السلاسل، القيمة التلقائية هي [].

يتم السماح لهذه المكتبة بالوصول إلى module أو package المحدّدَين.

ويتجاوب هذا مع علامات javac وJVM --add-exports=.

add_opens

قائمة السلاسل، القيمة التلقائية هي [].

يمكنك السماح لهذه المكتبة بالوصول بشكل انعكاسي إلى module أو package.

ويتجاوب هذا مع علامات javac وJVM --add-opens=).

bootclasspath

التصنيف، القيمة التلقائية هي None.

واجهة برمجة التطبيقات محظورة، يُرجى عدم استخدامها!
classpath_resources

قائمة التصنيفات؛ القيمة التلقائية هي [].

يُرجى عدم استخدام هذا الخيار ما لم تكن هناك طريقة أخرى).

قائمة بالموارد التي يجب وضعها في جذر شجرة جافا. الغرض الوحيد من هذه السمة هو إتاحة مكتبات الجهات الخارجية التي تتطلّب العثور على مواردها في مسار الفئة على أنّها "myconfig.xml" بالضبط. ولا يُسمح بها إلا على البرامج الثنائية وليس المكتبات، وذلك نظرًا لخطر التعارضات في مساحات الاسم.

create_executable

منطقي، القيمة التلقائية هي True

تم إيقاف العمل به. يمكنك استخدام java_single_jar بدلاً منه.
deploy_manifest_lines

قائمة السلاسل، القيمة التلقائية هي [].

تمثّل هذه السمة قائمة أسطر يمكن إضافتها إلى ملف META-INF/manifest.mf الذي تم إنشاؤه لهدف *_deploy.jar. لا يمكن استبدال محتوى هذه السمة ب"إنشاء متغيّر".
javacopts

قائمة السلاسل، القيمة التلقائية هي [].

خيارات برنامج تجميع إضافية لهذا البرنامج الثنائي يخضع هذا الخيار لاستبدال "MakeVariable" وترميز شل Bourne.

يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي.

jvm_flags

قائمة السلاسل، القيمة التلقائية هي [].

قائمة بالعلامات المراد تضمينها في النص البرمجي للتضمين الذي تم إنشاؤه لتشغيل هذا البرنامج الثنائي. يخضع هذا الإجراء للاستبدال $(location) و"إنشاء متغيّر"، وإنشاء رمز مميّز لـ Bourne Shell.

يشتمل نص برنامج تضمين لبرنامج Java الثنائي على تعريف ClassPATH (للعثور على جميع الأواني التابعة) ويستدعي مترجم Java الصحيح. يتضمن سطر الأوامر الذي يُنشِئه النص البرمجي لبرنامج تضمين اسم الفئة الرئيسية متبوعًا بعلامة "$@" حتى تتمكن من تمرير الوسيطات الأخرى بعد اسم الفئة. ومع ذلك، يجب تحديد الوسيطات المخصصة للتحليل من خلال JVM قبل اسم الفئة في سطر الأوامر. تتم إضافة محتوى jvm_flags إلى النص البرمجي المُرفَق قبل إدراج اسم الفئة.

يُرجى العِلم أنّ هذه السمة ليس لها أي تأثير في مخرجات *_deploy.jar.

launcher

التصنيف، القيمة التلقائية هي None.

حدِّد برنامجًا ثنائيًا سيتم استخدامه لتشغيل برنامج Java بدلاً من برنامج bin/java العادي المضمّن في JDK. يجب أن يكون الاستهداف cc_binary. يمكن تحديد أي cc_binary ينفِّذ Java Invocation API كقيمة لهذه السمة.

سيستخدم Bazel تلقائيًا مشغّل JDK العادي (bin/java أو java.exe).

لا تؤثر علامة Bazel ذات الصلة --java_launcher سوى في الأهداف java_binary وjava_test التي لم تحدّد سمة launcher.

تجدر الإشارة إلى أنّه سيتم إنشاء التبعيات الأصلية (C++ وSWIG وJNI) بشكلٍ مختلف بناءً على ما إذا كنت تستخدم مشغّل JDK أو مشغّلاً آخر:

  • إذا كنت تستخدم مشغّل JDK العادي (التلقائي)، يتم إنشاء التبعيات الأصلية كمكتبة مشتركة باسم {name}_nativedeps.so، حيث يكون {name} هو السمة name لقاعدة java_binary هذه. لا تتم إزالة الرموز غير المستخدمة بواسطة الرابط في هذه الإعدادات.
  • إذا كنت تستخدم أي مشغّل تطبيقات آخر، يتم ربط التبعيات الأصلية (C++) بشكل ثابت في برنامج ثنائي باسم {name}_nativedeps، حيث تكون {name} هي السمة name لقاعدة java_binary. في هذه الحالة، سيزيل الرابط أي رمز يعتبره غير مستخدم من البرنامج الثنائي الناتج، ما يعني أنّه لا يمكن ربط أي رمز C++ يتم الوصول إليه فقط من خلال JNI ما لم يحدّد هدف cc_library هذا alwayslink = 1.

عند استخدام أي مشغّل غير مشغّل JDK التلقائي، يتغير تنسيق إخراج *_deploy.jar. راجع مستندات java_binary الرئيسية للحصول على التفاصيل.

main_class

سلسلة، القيمة التلقائية هي "".

اسم الصف مع طريقة main() لاستخدامها كنقطة دخول. إذا كانت القاعدة تستخدم هذا الخيار، لن تحتاج إلى قائمة srcs=[...]. وبالتالي، باستخدام هذه السمة، يمكن للمرء أن ينشئ ملفًا تنفيذيًا من مكتبة Java التي تتضمّن طريقة main() واحدة أو أكثر.

قيمة هذه السمة هي اسم فئة وليس ملف مصدر. يجب أن تكون الفئة متوفّرة في وقت التشغيل: وقد يتم تجميعها باستخدام هذه القاعدة (من srcs) أو يتم توفيرها من خلال تبعيات مباشرة أو عابرة (من خلال runtime_deps أو deps). وفي حال عدم توفّر الفئة، سيتعذّر تشغيل البرنامج الثنائي في وقت التشغيل، وليس هناك أي فحص في وقت الإصدار.

منطقي، القيمة التلقائية هي False

plugins

قائمة التصنيفات؛ القيمة التلقائية هي [].

المكوّنات الإضافية لأداة التحويل البرمجي لـ Java التي يتم تشغيلها في وقت التجميع. سيتم تشغيل كل سمة java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins. سيتم تضمين الموارد التي تم إنشاؤها بواسطة المكون الإضافي في الوعاء الناتج لهذه القاعدة.
resource_strip_prefix

سلسلة، القيمة التلقائية هي "".

بادئة المسار التي ستتم إزالتها من موارد Java.

وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة resources. حدث خطأ أن ملف المورد لا يكون ضمن هذا الدليل. في حال عدم تحديد ذلك (الخيار التلقائي)، يتم تحديد مسار ملف الموارد وفقًا للمنطق نفسه المستخدَم في حزمة Java للملفات المصدر. على سبيل المثال، سيظهر ملف المصدر في stuff/java/foo/bar/a.txt على foo/bar/a.txt.

runtime_deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

توفير المكتبات للبرنامج الثنائي النهائي أو الاختبار في وقت التشغيل فقط. وكما هو الحال في deps العادي، ستظهر هذه السمات في مسار فئة وقت التشغيل، ولكن بخلافها، لن تظهر في مسار فئة وقت التجميع. يجب سرد التبعيات المطلوبة في وقت التشغيل فقط هنا. يجب أن تتجاهل أدوات تحليل التبعية الأهداف التي تظهر في كلٍّ من runtime_deps وdeps.
stamp

عدد صحيح، والعدد التلقائي هو 0.

ما إذا كان سيتم ترميز معلومات الإصدار في البرنامج الثنائي. القيم المتاحة:
  • stamp = 1: يجب ختم معلومات الإصدار دائمًا في البرنامج الثنائي، حتى في إصدارات --nostamp. يجب تجنُّب هذا الإعداد، لأنّه من المحتمل أن يؤدي إلى إيقاف التخزين المؤقت عن بُعد للبرنامج الثنائي وأي إجراءات تنزيل تعتمد عليه.
  • stamp = 0: استبدِل معلومات الإصدار دائمًا بقيم ثابتة. وهذا يوفر ذاكرة تخزين مؤقت جيدة لنتائج الإصدار.
  • stamp = -1: تتحكّم العلامة --[no]stamp في إمكانية تضمين معلومات الإصدار.

ولا تتم إعادة إنشاء البرامج الثنائية المختومة ما لم تتغير تبعياتها.

test_class

سلسلة، القيمة التلقائية هي "".

فئة Java التي سيجري تحميلها من قِبل مسؤول الاختبار.

بشكل تلقائي، إذا لم يتم تحديد هذه الوسيطة، يتم استخدام الوضع القديم واستخدام وسيطات الاختبار بدلاً من ذلك. اضبط العلامة --nolegacy_bazel_java_test على عدم التراجع عن الوسيطة الأولى.

تحدد هذه السمة اسم فئة Java التي سيتم تشغيلها في هذا الاختبار. ومن النادر ضبط ذلك. إذا تم حذف هذه الوسيطة، سيتم استنتاجها باستخدام السمة name للهدف ومسار جذره النسبي إلى جذره. إذا كان الاختبار يقع خارج جذر مصدر معروف، ستبلغ Bazel عن خطأ في حال عدم ضبط test_class.

بالنسبة إلى JUnit3، يجب أن تكون فئة الاختبار إما فئة فرعية من junit.framework.TestCase أو أن تحتوي على طريقة suite() ثابتة عامة تعرض junit.framework.Test (أو فئة فرعية من Test). وبالنسبة إلى JUnit4، يجب إضافة تعليق توضيحي إلى الفئة باستخدام org.junit.runner.RunWith.

تسمح هذه السمة لعدة قواعد من java_test بمشاركة نفس Test (TestCase، TestSuite، ...). ويتم عادةً إرسال معلومات إضافية إليها (على سبيل المثال، عبر jvm_flags=['-Dkey=value']) لكي يختلف سلوكها في كل حالة، مثلاً إجراء مجموعة فرعية مختلفة من الاختبارات. تتيح هذه السمة أيضًا استخدام اختبارات Java خارج شجرة javatests.

use_launcher

منطقي، القيمة التلقائية هي True

ما إذا كان يجب أن يستخدم البرنامج الثنائي مشغّل تطبيقات مخصّصًا

في حال ضبط هذه السمة على "خطأ"، سيتم تجاهل سمة مشغّل التطبيقات والعلامة --java_launcher ذات الصلة لهذا الهدف.

use_testrunner

منطقي، القيمة التلقائية هي True

استخدِم فئة برنامج الاختبار (تلقائيًا com.google.testing.junit.runner.BazelTestRunner) كنقطة دخول رئيسية لبرنامج Java، وقدِّم فئة الاختبار إلى برنامج الاختبار كقيمة للسمة bazel.test_suite في النظام.
يمكنك استخدام هذا الإجراء لإلغاء السلوك التلقائي، وهو استخدام برنامج الاختبار مع قواعد java_test، وعدم استخدامه لقواعد java_binary. من غير المحتمل أن ترغب في القيام بذلك. أحد الاستخدامات هو قواعد AllTest التي يتم استدعاؤها من خلال قاعدة أخرى (لإعداد قاعدة بيانات قبل إجراء الاختبارات، على سبيل المثال). يجب الإعلان عن قاعدة AllTest باعتبارها java_binary، ولكن ينبغي أن تظل تستخدم برنامج الاختبار كنقطة الدخول الرئيسية. يمكن استبدال اسم فئة عدّاء الاختبار باستخدام السمة main_class.

java_package_configuration

عرض مصدر القاعدة
java_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

إعداد للتطبيق على مجموعة من الحزم. يمكن إضافة الإعدادات إلى java_toolchain.javacopts.

مثال:



java_package_configuration(
    name = "my_configuration",
    packages = [":my_packages"],
    javacopts = ["-Werror"],
)

package_group(
    name = "my_packages",
    packages = [
        "//com/my/project/...",
        "-//com/my/project/testing/...",
    ],
)

java_toolchain(
    ...,
    package_configuration = [
        ":my_configuration",
    ]
)


الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

data

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة الملفات التي تتطلبها هذه الإعدادات في وقت التشغيل.
javacopts

قائمة السلاسل، القيمة التلقائية هي [].

علامات برنامج التحويل البرمجي لـ Java.
output_licenses

قائمة السلاسل، القيمة التلقائية هي [].

packages

قائمة التصنيفات؛ القيمة التلقائية هي [].

مجموعة package_group التي يجب تطبيق الإعدادات عليها.

java_plugin

عرض مصدر القاعدة
java_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

تحدّد java_plugin المكوّنات الإضافية لبرنامج تجميع Java الذي يتم تشغيله بواسطة Bazel. في الوقت الحالي، النوع الوحيد المتوافق من المكوّنات الإضافية هو معالجات التعليقات التوضيحية. يمكن للقاعدة java_library أو java_binary تشغيل المكوّنات الإضافية من خلال الاعتماد عليها عبر السمة plugins. ويستطيع java_library أيضًا تصدير المكوّنات الإضافية تلقائيًا إلى المكتبات التي تعتمد عليها بشكل مباشر باستخدام exported_plugins.

أهداف المخرجات الضمنية

  • libname.jar: أرشيف Java

الوسيطات مماثلة لـ java_library، باستثناء إضافة الوسيطة processor_class.

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

deps

قائمة التصنيفات؛ القيمة التلقائية هي [].

تمثّل هذه السمة قائمة المكتبات المطلوب ربطها بهذه المكتبة. يمكنك الاطّلاع على التعليقات العامة حول deps في القسم السمات المعتادة التي تحدّدها معظم قواعد التصميم.

ستكون الأواني التي تم إنشاؤها بواسطة قواعد java_library المدرَجة في deps ضمن مسار فئة وقت التجميع لهذه القاعدة. بالإضافة إلى ذلك، سيتم إغلاق الملف الشخصي من deps وruntime_deps وexports في مسار الصف وقت التشغيل.

وفي المقابل، يتم تضمين الأهداف في السمة data في ملفات التشغيل، ولكن ليس في مسار التجميع في وقت التجميع أو مسار فئة وقت التشغيل.

srcs

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة الملفات المصدر التي تتم معالجتها لإنشاء الهدف. هذه السمة مطلوبة دائمًا تقريبًا. يمكنك الاطّلاع على الاستثناءات أدناه.

يتم تجميع ملفات المصدر من النوع .java. في حال استخدام ملفات .java التي تم إنشاؤها، ننصح عمومًا بإضافة اسم قاعدة الإنشاء هنا بدلاً من اسم الملف نفسه. لا يؤدي ذلك إلى تحسين سهولة القراءة فحسب، بل يجعل القاعدة أكثر مرونة مع التغييرات المستقبلية: إذا كانت قاعدة الإنشاء تنشئ ملفات مختلفة في المستقبل، ستحتاج إلى إصلاح مكان واحد فقط، وهو outs لقاعدة الإنشاء. يجب ألّا تُدرِج قاعدة الإنشاء في deps لأنّها عملية بيئة مستقلة.

يتم فك ضغط ملفات المصدر من النوع .srcjar وتجميعها. (يكون هذا الإجراء مفيدًا إذا كنت بحاجة إلى إنشاء مجموعة من ملفات .java باستخدام genrule).

القواعد: إذا كانت القاعدة (عادةً genrule أو filegroup) تنشئ أيًا من الملفات المذكورة أعلاه، سيتم استخدامها بالطريقة نفسها كما هو موضّح للملفات المصدر.

يتم التعامل مع ملفات المصدر من النوع .properties كموارد.

ويتم تجاهل جميع الملفات الأخرى ما دام هناك ملف واحد على الأقل من نوع الملف الموصوف أعلاه. أو سيتم عرض رسالة خطأ.

هذه الوسيطة مطلوبة دائمًا تقريبًا، إلا إذا حددت الوسيطة runtime_deps.

data

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بالملفات التي تحتاج إليها هذه المكتبة في وقت التشغيل يمكنك الاطّلاع على التعليقات العامة حول data في القسم السمات المعتادة التي تحدّدها معظم قواعد التصميم.

عند إنشاء java_library، لا يضع Bazel هذه الملفات في أي مكان. وإذا تم إنشاء ملفات data، سينشئها Bazel. عند إنشاء اختبار يعتمد على java_library، ينسخ Bazel ملفات data أو يربطها في منطقة ملفات التشغيل.

resources

قائمة التصنيفات؛ القيمة التلقائية هي [].

قائمة بملفات البيانات المراد تضمينها في إناء Java

قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.

إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات .class المعتادة التي تم إنتاجها من خلال عملية التجميع. يتم تحديد موقع الموارد داخل ملف الوعاء من خلال هيكل المشروع. يبحث Bazel أولاً عن تنسيق الدليل القياسي لـ Maven (دليل "src" متبوعًا بتتبع دليل "الموارد"). وإذا لم يتم العثور على هذا الخيار، سيبحث Bazel بعد ذلك عن الدليل العلوي المسمى "java" أو "javatests" (مثلاً، إذا كان المورد متوفرًا في <workspace root>/x/java/y/java/z، فسيكون مسار المورد y/java/z.) لا يمكن إلغاء هذا التوجيه، ولكن يمكن استخدام السمة resource_strip_prefix لتحديد دليل بديل محدد لملفات الموارد.

add_exports

قائمة السلاسل، القيمة التلقائية هي [].

يتم السماح لهذه المكتبة بالوصول إلى module أو package المحدّدَين.

ويتجاوب هذا مع علامات javac وJVM --add-exports=.

add_opens

قائمة السلاسل، القيمة التلقائية هي [].

يمكنك السماح لهذه المكتبة بالوصول بشكل انعكاسي إلى module أو package.

ويتجاوب هذا مع علامات javac وJVM --add-opens=).

bootclasspath

التصنيف، القيمة التلقائية هي None.

واجهة برمجة التطبيقات محظورة، يُرجى عدم استخدامها!
generates_api

منطقي، القيمة التلقائية هي False

تشير هذه السمة إلى معالجات التعليقات التوضيحية التي تنشئ رمز واجهة برمجة التطبيقات.

إذا كانت القاعدة تستخدم معالج تعليقات توضيحية ينشئ واجهة برمجة التطبيقات، فإن القواعد الأخرى اعتمادًا عليها يمكن أن تشير إلى الرمز الذي تم إنشاؤه فقط إذا تمت جدولة إجراءات التجميع بعد إنشاء القاعدة. تُعلِم هذه السمة Bazel بوضع قيود الجدولة عند تفعيل--java_header_compilation.

تحذير: تؤثر هذه السمة في أداء الإصدار، استخدِمها فقط عند الضرورة.

javabuilder_jvm_flags

قائمة السلاسل، القيمة التلقائية هي [].

واجهة برمجة التطبيقات محظورة، يُرجى عدم استخدامها!
javacopts

قائمة السلاسل، القيمة التلقائية هي [].

خيارات برنامج تجميع إضافية لهذه المكتبة. يخضع هذا الخيار لاستبدال "MakeVariable" وترميز شل Bourne.

يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي.

منطقي، القيمة التلقائية هي False

ما إذا كان يجب استخدام هذه المكتبة للتجميع فقط وليس في وقت التشغيل يكون مفيدًا إذا تم توفير المكتبة بواسطة بيئة وقت التشغيل أثناء التنفيذ. ومن أمثلة هذه المكتبات واجهات برمجة تطبيقات IDE لمكونات IDE الإضافية أو tools.jar لأي شيء يتم تشغيله على JDK عادي.

يُرجى العلم أنّ neverlink = 1 لا يمنع برنامج التجميع من تضمين مواد من هذه المكتبة في أهداف تجميع تعتمد عليها، على النحو الذي تسمح به مواصفات لغة Java (على سبيل المثال، ثوابت static final للنوع String أو للأنواع الأساسية). وبالتالي، فإنّ حالة الاستخدام المفضّلة هي عندما تكون مكتبة وقت التشغيل مطابقة لمكتبة التجميع.

إذا كانت مكتبة وقت التشغيل مختلفة عن مكتبة التجميعات، عليك التأكّد من اختلافها فقط في الأماكن التي تحظر فيها لغة البرمجة JLS تضمين المبرمجات البرمجية (ويجب أن تتوفّر في جميع الإصدارات المستقبلية من JLS).

output_licenses

قائمة السلاسل، القيمة التلقائية هي [].

plugins

قائمة التصنيفات؛ القيمة التلقائية هي [].

المكوّنات الإضافية لأداة التحويل البرمجي لـ Java التي يتم تشغيلها في وقت التجميع. سيتم تشغيل كل سمة java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins. سيتم تضمين الموارد التي تم إنشاؤها بواسطة المكون الإضافي في الوعاء الناتج لهذه القاعدة.
processor_class

سلسلة، القيمة التلقائية هي "".

فئة المعالج هي النوع المؤهل بالكامل من الفئة التي يجب أن يستخدمها المحول البرمجي لـ Java كنقطة دخول إلى معالج التعليقات التوضيحية. إذا لم يتم تحديد هذه القاعدة، لن تساهم هذه القاعدة في معالجة التعليقات التوضيحية للمحول البرمجي لـ Java، ولكن سيبقى مسار فئة وقت التشغيل تضمينًا في مسار معالج التعليقات التوضيحية للمحوّل البرمجي. (الغرض الأساسي من ذلك هو الاستخدام بواسطة المكوّنات الإضافية لخطأ Prone، والتي يتم تحميلها من مسار معالج التعليقات التوضيحية باستخدام java.util.ServiceLoader).
proguard_specs

قائمة التصنيفات؛ القيمة التلقائية هي [].

الملفات التي سيتم استخدامها كمواصفات Proguard. سيصف هذا مجموعة المواصفات التي سيستخدمها Proguard. وفي حال تحديدها، ستتم إضافتها إلى أي هدف android_binary استنادًا إلى هذه المكتبة. يجب أن تحتوي الملفات المضمّنة هنا على قواعد حازمة فقط، وهي -dontnote و-dontwarn وassumenosideeffects والقواعد التي تبدأ بـ -keep. ولا يمكن أن تظهر الخيارات الأخرى إلا في proguard_specs الخاص بـ android_binary، لضمان عمليات دمج غير تلقائية.
resource_strip_prefix

سلسلة، القيمة التلقائية هي "".

بادئة المسار التي ستتم إزالتها من موارد Java.

وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة resources. حدث خطأ أن ملف المورد لا يكون ضمن هذا الدليل. في حال عدم تحديد ذلك (الخيار التلقائي)، يتم تحديد مسار ملف الموارد وفقًا للمنطق نفسه المستخدَم في حزمة Java للملفات المصدر. على سبيل المثال، سيظهر ملف المصدر في stuff/java/foo/bar/a.txt على foo/bar/a.txt.

java_runtime

عرض مصدر القاعدة
java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)

تحدد هذه السمة إعدادات وقت تشغيل Java.

مثال:



java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)


الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

srcs

قائمة التصنيفات؛ القيمة التلقائية هي [].

جميع الملفات في وقت التشغيل
default_cds

التصنيف، القيمة التلقائية هي None.

أرشيف CDS التلقائي لملف java_runtime المحكم. عند تفعيل مُحكَم لهدف java_binary وإذا كان الهدف لا يوفّر أرشيف CDS الخاص به من خلال تحديد السمة classlist، يتم حزم CDS التلقائي لـ java_runtime في JAR للنشر المحكم.
hermetic_srcs

قائمة التصنيفات؛ القيمة التلقائية هي [].

الملفات في وقت التشغيل اللازمة لعمليات النشر المُحكمة.
hermetic_static_libs

قائمة التصنيفات؛ القيمة التلقائية هي [].

المكتبات المرتبطة بشكل ثابت بمشغّل التطبيقات لإجراء عمليات النشر المحكم
java

التصنيف، القيمة التلقائية هي None.

المسار إلى ملف جافا القابل للتنفيذ.
java_home

سلسلة، القيمة التلقائية هي "".

تمثّل هذه السمة المسار إلى جذر وقت التشغيل. يخضع لاستبدال "Make" (المتغير). إذا كان هذا المسار مطلقًا، فإن القاعدة تشير إلى وقت تشغيل Java غير محكم الاستخدام بمسار معروف. وفي هذه الحالة، يجب أن تكون السمتان srcs وjava فارغتَين.
lib_ct_sym

التصنيف، القيمة التلقائية هي None.

الملف lib/ct.sym المطلوب للتجميع باستخدام "--release". إذا لم يتم تحديده وكان هناك ملف واحد بالضبط في srcs ينتهي مساره بـ /lib/ct.sym، يتم استخدام هذا الملف.
lib_modules

التصنيف، القيمة التلقائية هي None.

ملف lib/الوحدات المطلوبة لإجراء عمليات النشر المُحكمة.
output_licenses

قائمة السلاسل، القيمة التلقائية هي [].

version

عدد صحيح، والعدد التلقائي هو 0.

تمثّل هذه السمة الإصدار المميّز من وقت تشغيل Java. أي، العدد الصحيح الذي يعرضه Runtime.version().feature().

java_toolchain

عرض مصدر القاعدة
java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, distribs, exec_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)

تُحدِّد هذه السياسة إعدادات محوّل Java البرمجي. أي سلسلة أدوات يمكن استخدامها يمكن تغييرها من خلال الوسيطة --java_Toolchain. عادةً يجب عدم كتابة هذه الأنواع من القواعد إلا إذا كنت ترغب في ضبط برنامج التحويل البرمجي لـ Java.

أمثلة

مثال بسيط هو:



java_toolchain(
    name = "toolchain",
    source_version = "7",
    target_version = "7",
    bootclasspath = ["//tools/jdk:bootclasspath"],
    xlint = [ "classfile", "divzero", "empty", "options", "path" ],
    javacopts = [ "-g" ],
    javabuilder = ":JavaBuilder_deploy.jar",
)

الوسيطات

السمات
name

الاسم، مطلوب

اسم فريد لهذا الهدف.

android_lint_data

قائمة التصنيفات؛ القيمة التلقائية هي [].

تصنيفات الأدوات المتاحة لتوسيع التصنيفات في android_lint_jvm_opts
android_lint_jvm_opts

قائمة السلاسل، القيمة التلقائية هي [].

قائمة بالوسيطات لجهاز JVM عند استدعاء Android Lint.
android_lint_opts

قائمة السلاسل، القيمة التلقائية هي [].

قائمة بوسيطات Android Lint
android_lint_package_configuration

قائمة التصنيفات؛ القيمة التلقائية هي [].

إعدادات Android Lint التي يجب تطبيقها على مجموعات الحِزم المحدّدة
android_lint_runner

التصنيف، القيمة التلقائية هي None.

تصنيف برنامج Android Lint، إن توفّر
bootclasspath

قائمة التصنيفات؛ القيمة التلقائية هي [].

إدخالات مسار Bootclasspath لهدف Java. يتطابق مع علامة -bootclasspath في JavaScript.
compatible_javacopts

null; default is {}

واجهة برمجة تطبيقات داخلية، لا تستخدمها!
deps_checker

التصنيف، القيمة التلقائية هي None.

تصنيف حاوية نشر importDepsChecker
forcibly_disable_header_compilation

منطقي، القيمة التلقائية هي False

تجاهُل --java_header_compilation لإيقاف تجميع الرأس على الأنظمة الأساسية التي لا تدعمه، مثل JDK 7 Bazel.
genclass

التصنيف، القيمة التلقائية هي None.

تصنيف حاوية النشر في GenClass
header_compiler

التصنيف، القيمة التلقائية هي None.

تسمية محوّل العنوان مطلوب في حالة تمكين --java_header_compilation.
header_compiler_builtin_processors

قائمة السلاسل، القيمة التلقائية هي [].

واجهة برمجة تطبيقات داخلية، لا تستخدمها!
header_compiler_direct

التصنيف، القيمة التلقائية هي None.

تصنيف اختياري لبرنامج تجميع العنوان لاستخدامه في الإجراءات المباشرة في مسار الفئة التي لا تتضمّن أي معالِجات تعليقات توضيحية من إنشاء واجهة برمجة التطبيقات

ولا تتيح هذه الأداة معالجة التعليقات التوضيحية.

ijar

التصنيف، القيمة التلقائية هي None.

تصنيف ملف ijar القابل للتنفيذ.
jacocorunner

التصنيف، القيمة التلقائية هي None.

تصنيف حاوية النشر JacoCoverageRunner
java_runtime

التصنيف، القيمة التلقائية هي None.

java_runtime الذي سيتم استخدامه مع سلسلة الأدوات هذه. يتم تعيينها افتراضيًا على java_runtime في تهيئة التنفيذ.
javabuilder

التصنيف، القيمة التلقائية هي None.

تصنيف حاوية نشر JavaBuilder.
javabuilder_data

قائمة التصنيفات؛ القيمة التلقائية هي [].

تصنيفات البيانات المتاحة لتوسيع التصنيفات في javabuilder_jvm_opts.
javabuilder_jvm_opts

قائمة السلاسل، القيمة التلقائية هي [].

قائمة الوسيطات لجهاز JVM عند استدعاء JavaBuilder.
javac_supports_multiplex_workers

منطقي، القيمة التلقائية هي True

True إذا كان JavaBuilder يدعم التشغيل كعامل مستمر متعدد الإرسال، فسيكون false إذا لم يكن كذلك.
javac_supports_worker_cancellation

منطقي، القيمة التلقائية هي True

True إذا كان JavaBuilder يدعم إلغاء العمالة باستمرار، ويكون خطأ إذا لم يكن كذلك.
javac_supports_worker_multiplex_sandboxing

منطقي، القيمة التلقائية هي False

صحيح إذا كان JavaBuilder يدعم التشغيل كعامل تشغيل مستمر في وضع الحماية، ويكون على خطأ إذا لم يكن كذلك.
javac_supports_workers

منطقي، القيمة التلقائية هي True

True إذا كان JavaBuilder يدعم التشغيل كعامل مستمر، وخطأ إذا لم يكن كذلك.
javacopts

قائمة السلاسل، القيمة التلقائية هي [].

قائمة الوسيطات الإضافية للمحول البرمجي لـ Java. يُرجى الرجوع إلى وثائق المحول البرمجي لـ Java للحصول على قائمة شاملة بعلامات المحول البرمجي لـ Java المحتملة.
jspecify_implicit_deps

التصنيف، القيمة التلقائية هي None.

ميزة تجريبية، لا تستخدمها!
jspecify_javacopts

قائمة السلاسل، القيمة التلقائية هي [].

ميزة تجريبية، لا تستخدمها!
jspecify_packages

قائمة التصنيفات؛ القيمة التلقائية هي [].

ميزة تجريبية، لا تستخدمها!
jspecify_processor

التصنيف، القيمة التلقائية هي None.

ميزة تجريبية، لا تستخدمها!
jspecify_processor_class

سلسلة، القيمة التلقائية هي "".

ميزة تجريبية، لا تستخدمها!
jspecify_stubs

قائمة التصنيفات؛ القيمة التلقائية هي [].

ميزة تجريبية، لا تستخدمها!
jvm_opts

قائمة السلاسل، القيمة التلقائية هي [].

قائمة بالوسيطات لجهاز JVM عند استدعاء برنامج التحويل البرمجي لـ Java. يُرجى الرجوع إلى وثائق الجهاز الافتراضي Java للحصول على قائمة شاملة بالعلامات المحتملة لهذا الخيار.
misc

قائمة السلاسل، القيمة التلقائية هي [].

مهملة: استخدام javacopts بدلاً من ذلك
oneversion

التصنيف، القيمة التلقائية هي None.

تصنيف البرنامج الثنائي لتنفيذ إصدار واحد.
oneversion_allowlist_for_tests

التصنيف، القيمة التلقائية هي None.

تصنيف القائمة المسموح بها ذات الإصدار الواحد للاختبارات.
oneversion_whitelist

التصنيف، القيمة التلقائية هي None.

تصنيف القائمة المسموح بها ذات إصدار واحد.
package_configuration

قائمة التصنيفات؛ القيمة التلقائية هي [].

الإعدادات التي يجب تطبيقها على مجموعات الحِزم المحدّدة.
proguard_allowlister

التصنيف، القيمة التلقائية هي "@bazel_tools//tools/jdk:proguard_whitelister".

تصنيف قائمة الوصول إلى Proguard
reduced_classpath_incompatible_processors

قائمة السلاسل، القيمة التلقائية هي [].

واجهة برمجة تطبيقات داخلية، لا تستخدمها!
singlejar

التصنيف، القيمة التلقائية هي None.

تصنيف وعاء نشر أحاديةJar
source_version

سلسلة، القيمة التلقائية هي "".

إصدار مصدر Java (على سبيل المثال، "6" أو "7"). حيث تحدد مجموعة هياكل التعليمات البرمجية المسموح بها في رمز مصدر Java.
target_version

سلسلة، القيمة التلقائية هي "".

الإصدار المستهدف من Java (على سبيل المثال، "6" أو "7"). فهي تحدد وقت تشغيل Java الذي يجب إنشاء الفئة له.
timezone_data

التصنيف، القيمة التلقائية هي None.

تصنيف لوعاء موارد يحتوي على بيانات المنطقة الزمنية في حالة تعيين هذه البيانات، تتم إضافة بيانات المنطقة الزمنية كتبعية ضمنية في وقت التشغيل لجميع قواعد java_binary.
tools

قائمة التصنيفات؛ القيمة التلقائية هي [].

تصنيفات الأدوات المتاحة لتوسيع التصنيفات في jvm_opts
turbine_data

قائمة التصنيفات؛ القيمة التلقائية هي [].

تصنيفات البيانات المتاحة لتوسيع التصنيفات في turbine_jvm_opts
turbine_jvm_opts

قائمة السلاسل، القيمة التلقائية هي [].

قائمة بالوسيطات لجهاز JVM عند استدعاء التوربين.
xlint

قائمة السلاسل، القيمة التلقائية هي [].

قائمة التحذيرات المطلوب إضافتها أو إزالتها من القائمة التلقائية يسبقه بشرطة لإزالتها. يرجى مراجعة وثائق Javac حول خيارات -Xlint للحصول على مزيد من المعلومات.