قوانین
- 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)
یک بایگانی جاوا ("فایل jar")، به اضافه یک اسکریپت پوسته پوششی با همان نام قانون ایجاد می کند. اسکریپت wrapper shell از یک classpath استفاده میکند که شامل یک فایل jar برای هر کتابخانه است که باینری به آن بستگی دارد. هنگام اجرای اسکریپت wrapper shell، هر متغیر محیطی JAVABIN
خالی بر نسخه مشخص شده از طریق پرچم --java_runtime_version
Bazel اولویت دارد.
اسکریپت wrapper چندین پرچم منحصر به فرد را می پذیرد. برای فهرستی از پرچمهای قابل تنظیم و متغیرهای محیطی پذیرفتهشده توسط wrapper به //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
مراجعه کنید.
اهداف خروجی ضمنی
-
name .jar
: یک آرشیو جاوا، حاوی فایلهای کلاس و سایر منابع مربوط به وابستگیهای مستقیم باینری. -
name -src.jar
: آرشیو حاوی منابع ("مقدار منبع"). -
name _deploy.jar
: یک بایگانی جاوا مناسب برای استقرار (فقط در صورت درخواست صریح ساخته شده است).ساختن هدف
< name >_deploy.jar
برای قانون شما، یک فایل jar خود حاوی یک مانیفست ایجاد می کند که به آن اجازه می دهد با دستورjava -jar
یا با گزینه--singlejar
اسکریپت wrapper اجرا شود. استفاده از اسکریپت wrapper بهjava -jar
ترجیح داده می شود زیرا پرچم های JVM و گزینه های بارگیری کتابخانه های بومی را نیز پاس می کند.Deploy jar شامل تمام کلاس هایی است که توسط یک کلاس لودر که مسیر کلاس را از اسکریپت wrapper باینری از ابتدا تا انتها جستجو می کند، پیدا می کند. همچنین شامل کتابخانه های بومی مورد نیاز برای وابستگی ها می باشد. اینها در زمان اجرا به طور خودکار در JVM بارگذاری می شوند.
اگر هدف شما یک ویژگی راهانداز را مشخص میکند، به جای اینکه یک فایل JAR معمولی باشد، _deploy.jar یک باینری بومی خواهد بود. این شامل راهانداز بهعلاوه وابستگیهای بومی (C++) قانون شما است که همگی به یک باینری ثابت پیوند شدهاند. بایت های فایل jar واقعی به آن باینری بومی اضافه می شود و یک حباب باینری منفرد حاوی کد اجرایی و جاوا ایجاد می کند. شما می توانید فایل jar به دست آمده را مستقیماً مانند هر دودویی بومی اجرا کنید.
-
name _deploy-src.jar
: آرشیو حاوی منابع جمع آوری شده از بسته شدن گذرای هدف. اینها با کلاسهای موجود درdeploy.jar
مطابقت میکنند، به جز مواردی که jarها هیچ منبع 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 jar) این باینری که بین این باینری و اهداف مشخص شده در deploy_env به اشتراک گذاشته شده است، حذف میکند. |
deploy_manifest_lines | لیست رشته ها؛ پیش فرض META-INF/manifest.mf که برای هدف *_deploy.jar ایجاد شده است. محتویات این ویژگی مشمول جایگزینی «مغیر ایجاد کنید» نیستند . |
javacopts | لیست رشته ها؛ پیش فرض این گزینه های کامپایلر پس از گزینه های کامپایلر جهانی به javac منتقل می شوند. |
jvm_flags | لیست رشته ها؛ پیش فرض اسکریپت wrapper برای یک باینری جاوا شامل یک تعریف CLASSPATH (برای یافتن تمام jar های وابسته) است و مفسر جاوا مناسب را فراخوانی می کند. خط فرمان تولید شده توسط اسکریپت wrapper شامل نام کلاس اصلی و به دنبال آن یک توجه داشته باشید که این ویژگی روی خروجی های |
launcher | برچسب ؛ پیش فرض bin/java معمولی همراه با JDK استفاده شود. هدف باید یک cc_binary باشد. هر cc_binary که Java Invocation API را پیاده سازی می کند، می تواند به عنوان مقداری برای این ویژگی مشخص شود.به طور پیش فرض، Bazel از لانچر معمولی JDK (bin/java یا java.exe) استفاده می کند. پرچم مربوط به توجه داشته باشید که وابستگیهای بومی شما (C++، SWIG، JNI) بسته به اینکه از لانچر JDK یا راهانداز دیگری استفاده میکنید، متفاوت ساخته میشوند:
هنگام استفاده از هر راهاندازی غیر از راهانداز پیشفرض JDK، فرمت خروجی |
main_class | رشته؛ پیش فرض main() برای استفاده به عنوان نقطه ورودی. اگر یک قانون از این گزینه استفاده کند، نیازی به لیست srcs=[...] ندارد. بنابراین، با این ویژگی می توان یک فایل اجرایی از یک کتابخانه جاوا ایجاد کرد که از قبل حاوی یک یا چند متد main() است. مقدار این ویژگی یک نام کلاس است، نه یک فایل منبع. کلاس باید در زمان اجرا در دسترس باشد: ممکن است توسط این قانون کامپایل شود (از |
plugins | لیست برچسب ها ؛ پیش فرض java_plugin مشخص شده در این ویژگی هر زمان که این قانون ساخته شود اجرا می شود. یک کتابخانه همچنین ممکن است افزونههایی را از وابستگیهایی که از exported_plugins استفاده میکنند به ارث ببرد. منابع تولید شده توسط افزونه در jar حاصل از این قانون گنجانده می شود. |
resource_jars | لیست برچسب ها ؛ پیش فرض |
resource_strip_prefix | رشته؛ پیش فرض اگر مشخص شده باشد، این پیشوند مسیر از هر فایلی در ویژگی |
runtime_deps | لیست برچسب ها ؛ پیش فرض deps معمولی، اینها در مسیر کلاس اجرا ظاهر میشوند، اما بر خلاف آنها، در مسیر کلاسی زمان کامپایل ظاهر نمیشوند. وابستگی های مورد نیاز فقط در زمان اجرا باید در اینجا فهرست شوند. ابزارهای تجزیه و تحلیل وابستگی باید اهدافی را که در runtime_deps و deps ظاهر می شوند نادیده بگیرند. |
stamp | عدد صحیح؛ پیش فرض
باینری های مهر شده بازسازی نمی شوند مگر اینکه وابستگی آنها تغییر کند. |
use_launcher | بولی؛ پیش فرض اگر این ویژگی روی false تنظیم شود، ویژگی راهانداز و پرچم مربوط به |
use_testrunner | بولی؛ پیش فرض com.google.testing.junit.runner.BazelTestRunner ) به عنوان نقطه ورودی اصلی برای یک برنامه جاوا استفاده کنید و کلاس تست را به عنوان مقدار ویژگی سیستم bazel.test_suite در اختیار اجراکننده آزمایش قرار دهید. میتوانید از این برای لغو رفتار پیشفرض استفاده کنید، یعنی استفاده از test runner برای قوانین 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 .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 ارائه شده به اهداف جاوا که به این هدف بستگی دارد. |
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
کامپایل و پیوند می دهد.
خروجی های ضمنی
-
lib name .jar
: یک بایگانی جاوا حاوی فایل های کلاس. -
lib name -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 دسترسی داشته باشد اگر یک مسیر وابستگی بین آنها وجود داشته باشد که با یک لبه فرض کنید A به B بستگی دارد و B به C بستگی دارد. در این مورد C یک وابستگی گذرا از A است، بنابراین تغییر منابع C و بازسازی A همه چیز را به درستی بازسازی می کند. با این حال A نمی تواند از کلاس ها در C استفاده کند. برای اجازه دادن به آن، یا A باید C را در بسته شدن کتابخانه های صادر شده برای همه قوانین والدین مستقیم در دسترس است. یک مثال کمی متفاوت در نظر بگیرید: A به B بستگی دارد، B به C و D، و همچنین C را صادر می کند اما D را صادر نمی کند. اکنون A به C دسترسی دارد اما به D دسترسی ندارد. حال، اگر 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 استفاده میکنند به ارث ببرد. منابع تولید شده توسط افزونه در jar حاصل از این قانون گنجانده می شود. |
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
کد جاوا را از فایل های .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_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
کد جاوا را از فایل های .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_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()
یک تست جاوا را کامپایل می کند. تست یک بسته بندی باینری در اطراف کد تست شما است. به جای اینکه کلاس اصلی کامپایل شود، متد اصلی اجرای آزمایشی فراخوانی می شود.
اهداف خروجی ضمنی
-
name .jar
: یک بایگانی جاوا. -
name _deploy.jar
: یک آرشیو جاوا مناسب برای استقرار. (فقط در صورت درخواست صریح ساخته شده است.) برای جزئیات بیشتر به شرح خروجی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 | لیست رشته ها؛ پیش فرض اسکریپت wrapper برای یک باینری جاوا شامل یک تعریف CLASSPATH (برای یافتن تمام jar های وابسته) است و مفسر جاوا مناسب را فراخوانی می کند. خط فرمان تولید شده توسط اسکریپت wrapper شامل نام کلاس اصلی و به دنبال آن یک توجه داشته باشید که این ویژگی روی خروجی های |
launcher | برچسب ؛ پیش فرض bin/java معمولی همراه با JDK استفاده شود. هدف باید یک cc_binary باشد. هر cc_binary که Java Invocation API را پیاده سازی می کند، می تواند به عنوان مقداری برای این ویژگی مشخص شود.به طور پیش فرض، Bazel از لانچر معمولی JDK (bin/java یا java.exe) استفاده می کند. پرچم مربوط به توجه داشته باشید که وابستگیهای بومی شما (C++، SWIG، JNI) بسته به اینکه از لانچر JDK یا راهانداز دیگری استفاده میکنید، متفاوت ساخته میشوند:
هنگام استفاده از هر راهاندازی غیر از راهانداز پیشفرض JDK، فرمت خروجی |
main_class | رشته؛ پیش فرض main() برای استفاده به عنوان نقطه ورودی. اگر یک قانون از این گزینه استفاده کند، نیازی به لیست srcs=[...] ندارد. بنابراین، با این ویژگی می توان یک فایل اجرایی از یک کتابخانه جاوا ایجاد کرد که از قبل حاوی یک یا چند متد main() است. مقدار این ویژگی یک نام کلاس است، نه یک فایل منبع. کلاس باید در زمان اجرا در دسترس باشد: ممکن است توسط این قانون کامپایل شود (از |
neverlink | بولی؛ پیش فرض |
plugins | لیست برچسب ها ؛ پیش فرض java_plugin مشخص شده در این ویژگی هر زمان که این قانون ساخته شود اجرا می شود. یک کتابخانه همچنین ممکن است افزونههایی را از وابستگیهایی که از exported_plugins استفاده میکنند به ارث ببرد. منابع تولید شده توسط افزونه در jar حاصل از این قانون گنجانده می شود. |
resource_strip_prefix | رشته؛ پیش فرض اگر مشخص شده باشد، این پیشوند مسیر از هر فایلی در ویژگی |
runtime_deps | لیست برچسب ها ؛ پیش فرض deps معمولی، اینها در مسیر کلاس اجرا ظاهر میشوند، اما بر خلاف آنها، در مسیر کلاسی زمان کامپایل ظاهر نمیشوند. وابستگی های مورد نیاز فقط در زمان اجرا باید در اینجا فهرست شوند. ابزارهای تجزیه و تحلیل وابستگی باید اهدافی را که در runtime_deps و deps ظاهر می شوند نادیده بگیرند. |
stamp | عدد صحیح؛ پیش فرض
باینری های مهر شده بازسازی نمی شوند مگر اینکه وابستگی آنها تغییر کند. |
test_class | رشته؛ پیش فرض به طور پیش فرض، اگر این آرگومان تعریف نشده باشد، از حالت میراث استفاده می شود و به جای آن از آرگومان های تست استفاده می شود. پرچم این ویژگی نام یک کلاس جاوا را که باید توسط این تست اجرا شود را مشخص می کند. به ندرت نیاز به تنظیم این وجود دارد. اگر این آرگومان حذف شود، با استفاده از برای JUnit3، کلاس تست یا باید یک زیر کلاس از این ویژگی به چندین قانون |
use_launcher | بولی؛ پیش فرض اگر این ویژگی روی false تنظیم شود، ویژگی راهانداز و پرچم مربوط به |
use_testrunner | بولی؛ پیش فرض com.google.testing.junit.runner.BazelTestRunner ) به عنوان نقطه ورودی اصلی برای یک برنامه جاوا استفاده کنید و کلاس تست را به عنوان مقدار ویژگی سیستم bazel.test_suite در اختیار اجراکننده آزمایش قرار دهید.میتوانید از این برای لغو رفتار پیشفرض استفاده کنید، یعنی استفاده از test runner برای قوانین 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
s اضافه کرد.
مثال:
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
پلاگین هایی را برای کامپایلر جاوا که توسط Bazel اجرا می شود تعریف می کند. در حال حاضر، تنها نوع پلاگین پشتیبانی شده، پردازنده های حاشیه نویسی هستند. یک قانون java_library
یا java_binary
می تواند افزونه ها را بسته به آنها از طریق ویژگی plugins
اجرا کند. یک java_library
همچنین میتواند به طور خودکار افزونههایی را به کتابخانههایی که مستقیماً به آن وابسته هستند با استفاده از exported_plugins
صادر کند.
اهداف خروجی ضمنی
-
libname .jar
: یک بایگانی جاوا.
آرگومان ها با 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 | بولی؛ پیش فرض اگر یک قانون از یک پردازشگر حاشیه نویسی تولید کننده API استفاده کند، قوانین دیگر بسته به آن تنها در صورتی می توانند به کد تولید شده اشاره کنند که اقدامات کامپایل آنها پس از قانون تولید برنامه ریزی شده باشد. این ویژگی به Bazel دستور می دهد تا زمانی که --java_header_compilation فعال است، محدودیت های زمان بندی را معرفی کند. هشدار: این ویژگی بر عملکرد ساخت تأثیر می گذارد، فقط در صورت لزوم از آن استفاده کنید. |
javabuilder_jvm_flags | لیست رشته ها؛ پیش فرض |
javacopts | لیست رشته ها؛ پیش فرض این گزینه های کامپایلر پس از گزینه های کامپایلر جهانی به javac منتقل می شوند. |
neverlink | بولی؛ پیش فرض tools.jar برای هر چیزی که روی یک JDK استاندارد اجرا میشود. توجه داشته باشید که اگر کتابخانه زمان اجرا با کتابخانه کامپایل متفاوت است، باید اطمینان حاصل کنید که فقط در جاهایی که JLS کامپایلرها را به صورت درون خطی ممنوع کرده است (و این باید برای تمام نسخه های آینده JLS برقرار باشد) متفاوت است. |
output_licenses | لیست رشته ها؛ پیش فرض |
plugins | لیست برچسب ها ؛ پیش فرض java_plugin مشخص شده در این ویژگی هر زمان که این قانون ساخته شود اجرا می شود. یک کتابخانه همچنین ممکن است افزونههایی را از وابستگیهایی که از exported_plugins استفاده میکنند به ارث ببرد. منابع تولید شده توسط افزونه در jar حاصل از این قانون گنجانده می شود. |
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_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
استدلال ها
ویژگی های | |
---|---|
name | نام ؛ ضروری یک نام منحصر به فرد برای این هدف. |
srcs | لیست برچسب ها ؛ پیش فرض |
default_cds | برچسب ؛ پیش فرض java_runtime . هنگامی که هرمتیک برای یک هدف java_binary فعال است و اگر هدف با مشخص کردن ویژگی classlist آرشیو CDS خود را ارائه ندهد، CDS پیشفرض java_runtime در هرمتیک Deploy 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_toolchain می توان از کدام زنجیره ابزار استفاده کرد. معمولاً نباید آن نوع قوانین را بنویسید مگر اینکه بخواهید کامپایلر جاوا خود را تنظیم کنید.
مثال ها
یک مثال ساده می تواند این باشد:
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 | خالی؛ پیش فرض |
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 | لیست رشته ها؛ پیش فرض |