القواعد
- java_binary
- java_import
- java_library
- java_lite_proto_library
- java_proto_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
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
|
قائمة التصنيفات؛ القيمة التلقائية هي
يتم تجميع ملفات المصدر من النوع
يتم فك ضغط ملفات المصدر من النوع
القواعد: إذا كانت القاعدة (عادةً
هذه الوسيطة مطلوبة دائمًا، إلا إذا كانت السمة |
resources
|
قائمة التصنيفات؛ القيمة التلقائية هي
إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات
قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها. |
classpath_resources
|
قائمة التصنيفات؛ القيمة التلقائية هي
قائمة بالموارد التي يجب وضعها في جذر شجرة جافا. والغرض الوحيد من هذه السمة هو إتاحة مكتبات الجهات الخارجية التي تتطلب العثور على مواردها في مسار الفئة على أنّها |
create_executable
|
قيمة منطقية، غير قابلة للإعداد، والقيمة التلقائية هي java_single_jar بدلاً منه.
|
deploy_env
|
قائمة التصنيفات؛ القيمة التلقائية هي java_binary الأخرى التي تمثّل بيئة النشر لهذا البرنامج الثنائي.
اضبط هذه السمة عند إنشاء مكوّن إضافي سيتم تحميله من خلال java_binary آخر.يؤدي ضبط هذه السمة إلى استبعاد جميع التبعيات من مسار فئة وقت التشغيل (ووعاء النشر) لهذا البرنامج الثنائي الذي تتم مشاركته بين هذا البرنامج الثنائي والأهداف المحدّدة في deploy_env .
|
deploy_manifest_lines
|
قائمة السلاسل، القيمة التلقائية هي META-INF/manifest.mf الذي تم إنشاؤه لهدف *_deploy.jar . لا يمكن استبدال محتوى هذه السمة "إنشاء متغيّر".
|
javacopts
|
قائمة السلاسل، القيمة التلقائية هي يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي. |
jvm_flags
|
قائمة السلاسل، القيمة التلقائية هي يشتمل نص برنامج تضمين لبرنامج Java الثنائي على تعريف ClassPATH
(للعثور على جميع الأواني التابعة) ويستدعي مترجم Java الصحيح.
يتضمّن سطر الأوامر الذي أنشأه النص البرمجي للتضمين اسم
الفئة الرئيسية متبوعًا بعلامة يُرجى العلم أنّ هذه السمة ليس لها أي تأثير في مخرجات |
launcher
|
التصنيف، القيمة التلقائية هي bin/java العادي المضمّن في JDK.
يجب أن يكون الاستهداف cc_binary . يمكن تحديد أي cc_binary
ينفّذ
Java Invocation API كقيمة لهذه السمة.
سيستخدم Bazel تلقائيًا مشغّل JDK العادي (bin/java أو java.exe). لا تؤثر علامة Bazel ذات الصلة تجدُر الإشارة إلى أنّه سيتم إنشاء التبعيات الأصلية (C++ وSWIG وJNI) بشكل مختلف استنادًا إلى ما إذا كنت تستخدم مشغّل تطبيقات JDK أو مشغّل تطبيقات آخر:
عند استخدام أي مشغّل غير مشغّل تطبيقات JDK التلقائي، يتغير تنسيق
إخراج |
main_class
|
سلسلة، القيمة التلقائية هي main() لاستخدامها كنقطة دخول.
إذا كانت القاعدة تستخدم هذا الخيار، لن تحتاج إلى قائمة srcs=[...] .
وبالتالي، باستخدام هذه السمة، يمكن للمرء إنشاء ملف قابل للتنفيذ من مكتبة Java
التي تتضمّن طريقة main() واحدة أو أكثر.
قيمة هذه السمة هي اسم فئة وليس ملف مصدر. يجب أن تكون الفئة متاحة
في وقت التشغيل: وقد يتم تجميعها باستخدام هذه القاعدة (من |
plugins
|
قائمة التصنيفات؛ القيمة التلقائية هي java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins . سيتم تضمين الموارد
التي أنشأَتها المكوّن الإضافي في الوعاء الناتج لهذه القاعدة.
|
resource_jars
|
قائمة التصنيفات؛ القيمة التلقائية هي |
resource_strip_prefix
|
سلسلة، القيمة التلقائية هي
وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة
|
runtime_deps
|
قائمة التصنيفات؛ القيمة التلقائية هي deps العادي، ستظهر هذه السمات في مسار فئة وقت التشغيل، ولكن على عكسها، لن تظهر في مسار فئة وقت التجميع. ويجب سرد التبعيات المطلوبة في وقت التشغيل فقط هنا. يجب أن تتجاهل أدوات تحليل التبعية الأهداف التي تظهر في كلٍّ من
runtime_deps وdeps .
|
stamp
|
عدد صحيح، والعدد التلقائي هو
ولا تتم إعادة إنشاء البرامج الثنائية المختومة ما لم تتغير تبعياتها. |
use_launcher
|
منطقي، القيمة التلقائية هي في حال ضبط هذه السمة على "خطأ"، سيتم تجاهل
سمة مشغّل التطبيقات والعلامة
|
use_testrunner
|
منطقي، القيمة التلقائية هي 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
|
قائمة التصنيفات؛ القيمة التلقائية هي |
data
|
قائمة التصنيفات؛ القيمة التلقائية هي |
add_exports
|
قائمة السلاسل، القيمة التلقائية هي module أو package المحدّدَين.
ويتجاوب هذا مع علامات javac وJVM --add-exports=. |
add_opens
|
قائمة السلاسل، القيمة التلقائية هي module أو package .
ويتجاوب هذا مع علامات javac وJVM --add-opens=). |
constraints
|
قائمة السلاسل، القيمة التلقائية هي |
exports
|
قائمة التصنيفات؛ القيمة التلقائية هي |
jars
|
قائمة التصنيفات، مطلوبة قائمة ملفات JAR المقدَّمة لأهداف Java التي تعتمد على هذا الهدف |
neverlink
|
منطقي، القيمة التلقائية هي tools.jar لأي شيء يتم تشغيله على JDK قياسي.
|
proguard_specs
|
قائمة التصنيفات؛ القيمة التلقائية هي android_binary استنادًا إلى هذه المكتبة.
يجب أن تحتوي الملفات المضمّنة هنا على قواعد حازمة فقط، وهي -dontnote و-dontwarn وassumenosideeffects والقواعد التي تبدأ بـ -keep. ولا يمكن أن تظهر الخيارات الأخرى إلا في
proguard_specs الخاص بـ android_binary ، لضمان عمليات دمج غير تلقائية.
|
runtime_deps
|
قائمة التصنيفات؛ القيمة التلقائية هي |
srcjar
|
التصنيف، القيمة التلقائية هي |
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 في القسم
السمات المعتادة التي تحدّدها
معظم قواعد التصميم.
ستكون الأواني التي تم إنشاؤها بواسطة قواعد
وفي المقابل، يتم تضمين الأهداف في السمة |
srcs
|
قائمة التصنيفات؛ القيمة التلقائية هي
يتم تجميع ملفات المصدر من النوع
يتم فك ضغط ملفات المصدر من النوع
القواعد: إذا كانت القاعدة (عادةً
يتم التعامل مع ملفات المصدر من النوع ويتم تجاهل جميع الملفات الأخرى ما دام هناك ملف واحد على الأقل من نوع الملف الموصوف أعلاه. أو سيتم عرض رسالة خطأ.
هذه الوسيطة مطلوبة دائمًا تقريبًا، إلا إذا حددت الوسيطة |
data
|
قائمة التصنيفات؛ القيمة التلقائية هي data في القسم
السمات المعتادة التي تحدّدها
معظم قواعد التصميم.
عند إنشاء |
resources
|
قائمة التصنيفات؛ القيمة التلقائية هي قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.
إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات |
add_exports
|
قائمة السلاسل، القيمة التلقائية هي module أو package المحدّدَين.
ويتجاوب هذا مع علامات javac وJVM --add-exports=. |
add_opens
|
قائمة السلاسل، القيمة التلقائية هي module أو package .
ويتجاوب هذا مع علامات javac وJVM --add-opens=). |
bootclasspath
|
التصنيف، القيمة التلقائية هي |
exported_plugins
|
قائمة التصنيفات؛ القيمة التلقائية هي java_plugin (مثل معالِجات التعليقات التوضيحية) المطلوب تصديرها إلى المكتبات التي تعتمد بشكل مباشر على هذه المكتبة.
سيتم تطبيق قائمة |
exports
|
قائمة التصنيفات؛ القيمة التلقائية هي
أما قواعد إدراج البيانات هنا، فستتيحها لقواعد الوالدَين، كما لو كان الوالدان يعتمدان بشكل صريح
على هذه القواعد. ولا ينطبق ذلك على
ملخّص: يمكن للقاعدة X الوصول إلى الرمز في Y إذا كان هناك مسار تبعية بينها يبدأ بحافة
افترض أنّ القيمة أ تعتمد على الرقم ب والقيمة ب وتعتمد على المعيار ج. في هذه الحالة، تُعدّ حرف C تبعية مستمرة للنوع A، وبالتالي سيؤدي تغيير مصادر حرف C وإعادة إنشاء العنصر A إلى إعادة هيكلة كل العناصر بشكل صحيح. ومع ذلك، لن يتمكن A من استخدام الفئات في C. وللسماح بذلك، يجب أن يذكر حرف C في السمة يكون إغلاق المكتبات التي تم تصديرها متاحًا لجميع القواعد الرئيسية المباشرة. ولنأخذ مثالاً مختلفًا قليلاً: تعتمد "أ" على "ب" وتعتمد "ب" على "ج" و"د"، كما تصدر أيضًا "ج" وليس "د". الآن بإمكان "أ" الوصول إلى "ج" ولكن ليس إلى "د". والآن، إذا صدّرت C وD بعض المكتبات، C وD" على التوالي، بإمكان A الوصول إلى C فقط وليس D.
ملاحظة مهمة: القاعدة التي تم تصديرها ليست تبعية عادية. الالتزام بالمثال السابق،
إذا صدّرت B باستخدام C أيضًا وأرادت استخدام C، يجب أيضًا إدراجها في |
javabuilder_jvm_flags
|
قائمة السلاسل، القيمة التلقائية هي |
javacopts
|
قائمة السلاسل، القيمة التلقائية هي يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي. |
neverlink
|
منطقي، القيمة التلقائية هي tools.jar لأي شيء يتم تشغيله على JDK عادي.
يُرجى العلم أنّ إذا كانت مكتبة وقت التشغيل مختلفة عن مكتبة التجميعات، عليك التأكّد من اختلافها فقط في الأماكن التي تحظر فيها لغة البرمجة JLS تضمين المبرمجات البرمجية (ويجب أن تتوفّر في جميع الإصدارات المستقبلية من JLS). |
plugins
|
قائمة التصنيفات؛ القيمة التلقائية هي java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins . سيتم تضمين الموارد التي تم إنشاؤها بواسطة المكون الإضافي في الوعاء الناتج لهذه القاعدة.
|
proguard_specs
|
قائمة التصنيفات؛ القيمة التلقائية هي android_binary استنادًا إلى هذه المكتبة.
يجب أن تحتوي الملفات المضمّنة هنا على قواعد حازمة فقط، وهي -dontnote و-dontwarn وassumenosideeffects والقواعد التي تبدأ بـ -keep. ولا يمكن أن تظهر الخيارات الأخرى إلا في
proguard_specs الخاص بـ android_binary ، لضمان عمليات دمج غير تلقائية.
|
resource_strip_prefix
|
سلسلة، القيمة التلقائية هي
وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة |
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
: أرشيف Javaname_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
|
قائمة التصنيفات؛ القيمة التلقائية هي
يتم تجميع ملفات المصدر من النوع
يتم فك ضغط ملفات المصدر من النوع
القواعد: إذا كانت القاعدة (عادةً
هذه الوسيطة مطلوبة دائمًا، إلا إذا حددت السمة |
data
|
قائمة التصنيفات؛ القيمة التلقائية هي data
في السمات النموذجية التي تحدّدها
معظم قواعد التصميم.
|
resources
|
قائمة التصنيفات؛ القيمة التلقائية هي قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.
إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات |
add_exports
|
قائمة السلاسل، القيمة التلقائية هي module أو package المحدّدَين.
ويتجاوب هذا مع علامات javac وJVM --add-exports=. |
add_opens
|
قائمة السلاسل، القيمة التلقائية هي module أو package .
ويتجاوب هذا مع علامات javac وJVM --add-opens=). |
bootclasspath
|
التصنيف، القيمة التلقائية هي |
classpath_resources
|
قائمة التصنيفات؛ القيمة التلقائية هي
قائمة بالموارد التي يجب وضعها في جذر شجرة جافا. الغرض الوحيد من هذه السمة هو إتاحة مكتبات الجهات الخارجية التي تتطلّب العثور على مواردها في مسار الفئة على أنّها |
create_executable
|
منطقي، القيمة التلقائية هي java_single_jar بدلاً منه.
|
deploy_manifest_lines
|
قائمة السلاسل، القيمة التلقائية هي META-INF/manifest.mf الذي تم إنشاؤه لهدف *_deploy.jar . لا يمكن استبدال محتوى هذه السمة ب"إنشاء متغيّر".
|
javacopts
|
قائمة السلاسل، القيمة التلقائية هي يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي. |
jvm_flags
|
قائمة السلاسل، القيمة التلقائية هي يشتمل نص برنامج تضمين لبرنامج Java الثنائي على تعريف ClassPATH
(للعثور على جميع الأواني التابعة) ويستدعي مترجم Java الصحيح.
يتضمن سطر الأوامر الذي يُنشِئه النص البرمجي لبرنامج تضمين اسم الفئة الرئيسية متبوعًا بعلامة يُرجى العِلم أنّ هذه السمة ليس لها أي تأثير في مخرجات |
launcher
|
التصنيف، القيمة التلقائية هي bin/java العادي المضمّن في JDK.
يجب أن يكون الاستهداف cc_binary . يمكن تحديد أي cc_binary ينفِّذ
Java Invocation API كقيمة لهذه السمة.
سيستخدم Bazel تلقائيًا مشغّل JDK العادي (bin/java أو java.exe). لا تؤثر علامة Bazel ذات الصلة تجدر الإشارة إلى أنّه سيتم إنشاء التبعيات الأصلية (C++ وSWIG وJNI) بشكلٍ مختلف بناءً على ما إذا كنت تستخدم مشغّل JDK أو مشغّلاً آخر:
عند استخدام أي مشغّل غير مشغّل JDK التلقائي، يتغير تنسيق
إخراج |
main_class
|
سلسلة، القيمة التلقائية هي main() لاستخدامها كنقطة دخول.
إذا كانت القاعدة تستخدم هذا الخيار، لن تحتاج إلى قائمة srcs=[...] .
وبالتالي، باستخدام هذه السمة، يمكن للمرء أن ينشئ ملفًا تنفيذيًا من مكتبة Java التي
تتضمّن طريقة main() واحدة أو أكثر.
قيمة هذه السمة هي اسم فئة وليس ملف مصدر. يجب أن تكون الفئة
متوفّرة في وقت التشغيل: وقد يتم تجميعها باستخدام هذه القاعدة (من |
neverlink
|
منطقي، القيمة التلقائية هي |
plugins
|
قائمة التصنيفات؛ القيمة التلقائية هي java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins . سيتم تضمين الموارد التي تم إنشاؤها بواسطة المكون الإضافي في الوعاء الناتج لهذه القاعدة.
|
resource_strip_prefix
|
سلسلة، القيمة التلقائية هي
وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة |
runtime_deps
|
قائمة التصنيفات؛ القيمة التلقائية هي deps العادي، ستظهر هذه السمات في مسار فئة وقت التشغيل، ولكن بخلافها، لن تظهر في مسار فئة وقت التجميع. يجب سرد التبعيات المطلوبة في وقت
التشغيل فقط هنا. يجب أن تتجاهل أدوات تحليل التبعية الأهداف التي تظهر في كلٍّ من
runtime_deps وdeps .
|
stamp
|
عدد صحيح، والعدد التلقائي هو
ولا تتم إعادة إنشاء البرامج الثنائية المختومة ما لم تتغير تبعياتها. |
test_class
|
سلسلة، القيمة التلقائية هي
بشكل تلقائي، إذا لم يتم تحديد هذه الوسيطة، يتم استخدام الوضع القديم واستخدام وسيطات الاختبار بدلاً من ذلك. اضبط العلامة
تحدد هذه السمة اسم فئة Java التي سيتم تشغيلها في
هذا الاختبار. ومن النادر ضبط ذلك. إذا تم حذف هذه الوسيطة،
سيتم استنتاجها باستخدام السمة
بالنسبة إلى JUnit3، يجب أن تكون فئة الاختبار إما فئة فرعية من
تسمح هذه السمة لعدة قواعد من |
use_launcher
|
منطقي، القيمة التلقائية هي في حال ضبط هذه السمة على "خطأ"، سيتم تجاهل
سمة مشغّل التطبيقات والعلامة
|
use_testrunner
|
منطقي، القيمة التلقائية هي 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
|
قائمة السلاسل، القيمة التلقائية هي |
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 في القسم
السمات المعتادة التي تحدّدها
معظم قواعد التصميم.
ستكون الأواني التي تم إنشاؤها بواسطة قواعد
وفي المقابل، يتم تضمين الأهداف في السمة |
srcs
|
قائمة التصنيفات؛ القيمة التلقائية هي
يتم تجميع ملفات المصدر من النوع
يتم فك ضغط ملفات المصدر من النوع
القواعد: إذا كانت القاعدة (عادةً
يتم التعامل مع ملفات المصدر من النوع ويتم تجاهل جميع الملفات الأخرى ما دام هناك ملف واحد على الأقل من نوع الملف الموصوف أعلاه. أو سيتم عرض رسالة خطأ.
هذه الوسيطة مطلوبة دائمًا تقريبًا، إلا إذا حددت الوسيطة |
data
|
قائمة التصنيفات؛ القيمة التلقائية هي data في القسم
السمات المعتادة التي تحدّدها
معظم قواعد التصميم.
عند إنشاء |
resources
|
قائمة التصنيفات؛ القيمة التلقائية هي قد تكون الموارد ملفات مصدر أو ملفات تم إنشاؤها.
إذا تم تحديد الموارد، سيتم تجميعها في الوعاء مع ملفات |
add_exports
|
قائمة السلاسل، القيمة التلقائية هي module أو package المحدّدَين.
ويتجاوب هذا مع علامات javac وJVM --add-exports=. |
add_opens
|
قائمة السلاسل، القيمة التلقائية هي module أو package .
ويتجاوب هذا مع علامات javac وJVM --add-opens=). |
bootclasspath
|
التصنيف، القيمة التلقائية هي |
generates_api
|
منطقي، القيمة التلقائية هي إذا كانت القاعدة تستخدم معالج تعليقات توضيحية ينشئ واجهة برمجة التطبيقات، فإن القواعد الأخرى اعتمادًا عليها يمكن أن تشير إلى الرمز الذي تم إنشاؤه فقط إذا تمت جدولة إجراءات التجميع بعد إنشاء القاعدة. تُعلِم هذه السمة Bazel بوضع قيود الجدولة عند تفعيل--java_header_compilation. تحذير: تؤثر هذه السمة في أداء الإصدار، استخدِمها فقط عند الضرورة. |
javabuilder_jvm_flags
|
قائمة السلاسل، القيمة التلقائية هي |
javacopts
|
قائمة السلاسل، القيمة التلقائية هي يتم تمرير خيارات برنامج التحويل البرمجي هذه إلى javac بعد خيارات برنامج التحويل البرمجي العمومي. |
neverlink
|
منطقي، القيمة التلقائية هي tools.jar لأي شيء يتم تشغيله على JDK عادي.
يُرجى العلم أنّ إذا كانت مكتبة وقت التشغيل مختلفة عن مكتبة التجميعات، عليك التأكّد من اختلافها فقط في الأماكن التي تحظر فيها لغة البرمجة JLS تضمين المبرمجات البرمجية (ويجب أن تتوفّر في جميع الإصدارات المستقبلية من JLS). |
output_licenses
|
قائمة السلاسل، القيمة التلقائية هي |
plugins
|
قائمة التصنيفات؛ القيمة التلقائية هي java_plugin محدّدة في هذه السمة كلما تم إنشاء هذه القاعدة. وقد تكتسب المكتبة أيضًا المكوّنات الإضافية من التبعيات التي تستخدم exported_plugins . سيتم تضمين الموارد التي تم إنشاؤها بواسطة المكون الإضافي في الوعاء الناتج لهذه القاعدة.
|
processor_class
|
سلسلة، القيمة التلقائية هي |
proguard_specs
|
قائمة التصنيفات؛ القيمة التلقائية هي android_binary استنادًا إلى هذه المكتبة.
يجب أن تحتوي الملفات المضمّنة هنا على قواعد حازمة فقط، وهي -dontnote و-dontwarn وassumenosideeffects والقواعد التي تبدأ بـ -keep. ولا يمكن أن تظهر الخيارات الأخرى إلا في
proguard_specs الخاص بـ android_binary ، لضمان عمليات دمج غير تلقائية.
|
resource_strip_prefix
|
سلسلة، القيمة التلقائية هي
وإذا تم تحديد بادئة المسار هذه، ستتم إزالتها من كل ملف في السمة |
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
|
التصنيف، القيمة التلقائية هي java_runtime المحكم. عند تفعيل مُحكَم لهدف java_binary وإذا كان الهدف لا يوفّر أرشيف CDS الخاص به من خلال تحديد السمة classlist ، يتم حزم CDS التلقائي لـ java_runtime في JAR للنشر المحكم.
|
hermetic_srcs
|
قائمة التصنيفات؛ القيمة التلقائية هي |
hermetic_static_libs
|
قائمة التصنيفات؛ القيمة التلقائية هي |
java
|
التصنيف، القيمة التلقائية هي |
java_home
|
سلسلة، القيمة التلقائية هي srcs وjava فارغتَين.
|
lib_ct_sym
|
التصنيف، القيمة التلقائية هي --release ". إذا لم يتم تحديده وكان هناك ملف واحد بالضبط في srcs ينتهي مساره بـ /lib/ct.sym ، يتم استخدام هذا الملف.
|
lib_modules
|
التصنيف، القيمة التلقائية هي |
output_licenses
|
قائمة السلاسل، القيمة التلقائية هي |
version
|
عدد صحيح، والعدد التلقائي هو 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_opts
|
قائمة السلاسل، القيمة التلقائية هي |
android_lint_package_configuration
|
قائمة التصنيفات؛ القيمة التلقائية هي |
android_lint_runner
|
التصنيف، القيمة التلقائية هي |
bootclasspath
|
قائمة التصنيفات؛ القيمة التلقائية هي |
compatible_javacopts
|
null; default is |
deps_checker
|
التصنيف، القيمة التلقائية هي |
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
|
قائمة السلاسل، القيمة التلقائية هي |
misc
|
قائمة السلاسل، القيمة التلقائية هي |
oneversion
|
التصنيف، القيمة التلقائية هي |
oneversion_allowlist_for_tests
|
التصنيف، القيمة التلقائية هي |
oneversion_whitelist
|
التصنيف، القيمة التلقائية هي |
package_configuration
|
قائمة التصنيفات؛ القيمة التلقائية هي |
proguard_allowlister
|
التصنيف، القيمة التلقائية هي |
reduced_classpath_incompatible_processors
|
قائمة السلاسل، القيمة التلقائية هي |
singlejar
|
التصنيف، القيمة التلقائية هي |
source_version
|
سلسلة، القيمة التلقائية هي |
target_version
|
سلسلة، القيمة التلقائية هي |
timezone_data
|
التصنيف، القيمة التلقائية هي |
tools
|
قائمة التصنيفات؛ القيمة التلقائية هي |
turbine_data
|
قائمة التصنيفات؛ القيمة التلقائية هي |
turbine_jvm_opts
|
قائمة السلاسل، القيمة التلقائية هي |
xlint
|
قائمة السلاسل، القيمة التلقائية هي |