नियम
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_single_jar
- java_toolchain
java_binary
नियम का सोर्स देखेंjava_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, aspect_hints, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, package_metadata, plugins, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
यह Java संग्रह ("jar फ़ाइल") बनाता है. साथ ही, नियम के नाम वाली रैपर शेल स्क्रिप्ट भी बनाता है.
रैपर शेल स्क्रिप्ट, क्लासपाथ का इस्तेमाल करती है. इसमें अन्य चीज़ों के साथ-साथ, हर उस लाइब्रेरी के लिए एक जार फ़ाइल शामिल होती है जिस पर बाइनरी निर्भर करती है. रैपर शेल स्क्रिप्ट चलाते समय, खाली नहीं है JAVABIN
एनवायरमेंट वैरिएबल को Bazel के --java_runtime_version
फ़्लैग के ज़रिए तय किए गए वर्शन के मुकाबले प्राथमिकता दी जाएगी.
रैपर स्क्रिप्ट, कई यूनीक फ़्लैग स्वीकार करती है. रैपर में कॉन्फ़िगर किए जा सकने वाले फ़्लैग और एनवायरमेंट वैरिएबल की सूची देखने के लिए, java_stub_template.txt
पर जाएं.
इंप्लिसिट आउटपुट टारगेट
name.jar
: यह एक Java संग्रह है. इसमें क्लास फ़ाइलें और अन्य संसाधन शामिल होते हैं. ये संसाधन, बाइनरी की सीधी डिपेंडेंसी से जुड़े होते हैं.name-src.jar
: यह एक ऐसा संग्रह है जिसमें सोर्स ("source jar") शामिल होते हैं.name_deploy.jar
: डिप्लॉयमेंट के लिए सही Java संग्रह (सिर्फ़ तब बनाया जाता है, जब साफ़ तौर पर अनुरोध किया गया हो).अपने नियम के लिए
<name>_deploy.jar
टारगेट बनाने से, एक जार फ़ाइल बनती है. इसमें एक मेनिफ़ेस्ट होता है, जिसकी मदद से इसेjava -jar
कमांड या रैपर स्क्रिप्ट के--singlejar
विकल्प के साथ चलाया जा सकता है.java -jar
के बजाय रैपर स्क्रिप्ट का इस्तेमाल करना बेहतर होता है, क्योंकि यह JVM फ़्लैग और नेटिव लाइब्रेरी लोड करने के विकल्प भी पास करती है.डिप्लॉय जार में वे सभी क्लास शामिल होती हैं जिन्हें क्लासलोडर ढूंढता है. यह क्लासलोडर, बाइनरी की रैपर स्क्रिप्ट से शुरू से लेकर आखिर तक क्लासपाथ खोजता है. इसमें डिपेंडेंसी के लिए ज़रूरी नेटिव लाइब्रेरी भी शामिल होती हैं. ये रनटाइम के दौरान, JVM में अपने-आप लोड हो जाते हैं.
अगर आपके टारगेट में launcher एट्रिब्यूट के बारे में बताया गया है, तो _deploy.jar एक सामान्य JAR फ़ाइल होने के बजाय, नेटिव बाइनरी होगी. इसमें लॉन्चर के साथ-साथ, आपके नियम की सभी नेटिव (C++) डिपेंडेंसी शामिल होंगी. इन सभी को एक स्टैटिक बाइनरी में लिंक किया जाएगा. असल JAR फ़ाइल के बाइट, उस नेटिव बाइनरी में जोड़ दिए जाएंगे. इससे एक बाइनरी ब्लोब बन जाएगा, जिसमें एक्ज़ीक्यूटेबल और Java कोड, दोनों शामिल होंगे. नतीजे के तौर पर मिली JAR फ़ाइल को सीधे तौर पर चलाया जा सकता है. ठीक वैसे ही जैसे किसी नेटिव बाइनरी को चलाया जाता है.
name_deploy-src.jar
: यह एक ऐसा संग्रह होता है जिसमें टारगेट के ट्रांज़िटिव क्लोज़र से इकट्ठा किए गए सोर्स शामिल होते हैं. येdeploy.jar
में मौजूद क्लास से मेल खाएंगे. हालांकि, ऐसा सिर्फ़ तब होगा, जब जार का कोई मेल खाने वाला सोर्स जार न हो.
सोर्स फ़ाइल के नाम का इस्तेमाल करना एक अच्छा तरीका है. यह ऐप्लिकेशन का मुख्य एंट्री पॉइंट होता है. हालांकि, इसमें एक्सटेंशन शामिल नहीं होना चाहिए. उदाहरण के लिए, अगर आपके एंट्री पॉइंट का नाम Main.java
है, तो आपका नाम Main
हो सकता है.
srcs
के बिना, java_binary
नियम में deps
एट्रिब्यूट का इस्तेमाल नहीं किया जा सकता. ऐसे नियम के लिए, runtime_deps
की ओर से उपलब्ध कराया गया main_class
एट्रिब्यूट ज़रूरी है.
यहां दिए गए कोड स्निपेट में, एक सामान्य गड़बड़ी के बारे में बताया गया है:
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 |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
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
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू
उन संसाधनों की सूची जो Java ट्री के रूट में मौजूद होने चाहिए. इस एट्रिब्यूट का मकसद सिर्फ़ तीसरे पक्ष की उन लाइब्रेरी के साथ काम करना है जिनके संसाधनों को क्लासपाथ पर |
create_executable
|
बूलियन; डिफ़ॉल्ट वैल्यू java_single_jar का इस्तेमाल करें.
|
deploy_env
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू java_binary टारगेट की सूची, जो इस बाइनरी के लिए डिप्लॉयमेंट एनवायरमेंट को दिखाती है.
इस एट्रिब्यूट को तब सेट करें, जब आपको ऐसा प्लगिन बनाना हो जिसे किसी अन्य java_binary से लोड किया जाएगा.इस एट्रिब्यूट को सेट करने से, इस बाइनरी के रनटाइम क्लासपाथ (और डिप्लॉय जार) से वे सभी डिपेंडेंसी हट जाती हैं जिन्हें इस बाइनरी और deploy_env में बताए गए टारगेट के बीच शेयर किया जाता है.
|
deploy_manifest_lines
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू META-INF/manifest.mf टारगेट के लिए जनरेट की गई META-INF/manifest.mf फ़ाइल में जोड़ने के लिए लाइनों की सूची.*_deploy.jar इस एट्रिब्यूट के कॉन्टेंट को "बदलाव करें" सुविधा का इस्तेमाल करके बदला नहीं जा सकता.
|
javacopts
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू कंपाइलर के इन विकल्पों को, ग्लोबल कंपाइलर के विकल्पों के बाद javac को पास किया जाता है. |
jvm_flags
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू Java बाइनरी के लिए रैपर स्क्रिप्ट में CLASSPATH की परिभाषा शामिल होती है. इससे सभी डिपेंडेंट जार फ़ाइलें मिलती हैं. साथ ही, यह सही Java इंटरप्रेटर को शुरू करती है.
रैपर स्क्रिप्ट से जनरेट की गई कमांड लाइन में, मुख्य क्लास का नाम शामिल होता है. इसके बाद, ध्यान दें कि इस एट्रिब्यूट का |
launcher
|
लेबल; डिफ़ॉल्ट वैल्यू bin/java प्रोग्राम के बजाय, Java प्रोग्राम को चलाने के लिए किया जाएगा.
टारगेट cc_binary होना चाहिए. इस एट्रिब्यूट की वैल्यू के तौर पर, ऐसे किसी भी cc_binary का इस्तेमाल किया जा सकता है जो
Java Invocation API लागू करता है.
डिफ़ॉल्ट रूप से, Bazel सामान्य JDK लॉन्चर (bin/java या java.exe) का इस्तेमाल करेगा. इससे जुड़ा ध्यान दें कि आपकी नेटिव (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
|
पूर्णांक; डिफ़ॉल्ट वैल्यू
स्टैंप किए गए बाइनरी को तब तक फिर से नहीं बनाया जाता, जब तक उनकी डिपेंडेंसी में बदलाव न हो. |
use_launcher
|
बूलियन; डिफ़ॉल्ट वैल्यू अगर इस एट्रिब्यूट को 'गलत है' पर सेट किया जाता है, तो इस टारगेट के लिए लॉन्चर एट्रिब्यूट और इससे जुड़ा |
use_testrunner
|
बूलियन; डिफ़ॉल्ट वैल्यू com.google.testing.junit.runner.BazelTestRunner ) क्लास का इस्तेमाल करें. साथ ही, टेस्ट रनर को टेस्ट क्लास, bazel.test_suite सिस्टम प्रॉपर्टी की वैल्यू के तौर पर दें.
इसका इस्तेमाल, डिफ़ॉल्ट व्यवहार को बदलने के लिए किया जा सकता है. डिफ़ॉल्ट व्यवहार यह है कि java_test नियमों के लिए टेस्ट रनर का इस्तेमाल किया जाता है और java_binary नियमों के लिए इसका इस्तेमाल नहीं किया जाता है. ऐसा हो सकता है कि आपको यह सुविधा इस्तेमाल न करनी हो. इसका इस्तेमाल, AllTest
ऐसे नियमों के लिए किया जाता है जिन्हें किसी दूसरे नियम से लागू किया जाता है. उदाहरण के लिए, जांच शुरू करने से पहले डेटाबेस सेट अप करने के लिए. AllTest
नियम को java_binary के तौर पर एलान किया जाना चाहिए. हालांकि, इसे अब भी टेस्ट रनर को मुख्य एंट्री पॉइंट के तौर पर इस्तेमाल करना चाहिए.
टेस्ट रनर क्लास के नाम को main_class एट्रिब्यूट का इस्तेमाल करके बदला जा सकता है.
|
java_import
नियम का सोर्स देखेंjava_import(name, deps, data, add_exports, add_opens, aspect_hints, compatible_with, constraints, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, package_metadata, 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
|
लेबल की सूची; ज़रूरी है इस टारगेट पर निर्भर करने वाले Java टारगेट को दी गई JAR फ़ाइलों की सूची. |
neverlink
|
बूलियन; डिफ़ॉल्ट वैल्यू tools.jar .
|
proguard_specs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू android_binary टारगेट में जोड़ दिया जाएगा.
यहां शामिल की गई फ़ाइलों में सिर्फ़ आइडमपोटेंट नियम होने चाहिए. जैसे, -dontnote, -dontwarn,
assumenosideeffects, और -keep से शुरू होने वाले नियम. अन्य विकल्प सिर्फ़ android_binary के proguard_specs में दिख सकते हैं, ताकि यह पक्का किया जा सके कि मर्ज किए गए विकल्प एक जैसे न हों.
|
runtime_deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू |
srcjar
|
लेबल; डिफ़ॉल्ट वैल्यू |
java_library
नियम का सोर्स देखेंjava_library(name, deps, srcs, data, resources, add_exports, add_opens, aspect_hints, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, package_metadata, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
यह नियम, सोर्स को कंपाइल करता है और उन्हें .jar
फ़ाइल में लिंक करता है.
इंप्लिसिट आउटपुट
libname.jar
: यह क्लास फ़ाइलों वाला Java संग्रह है.libname-src.jar
: यह एक ऐसा संग्रह है जिसमें सोर्स ("source 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 को अपने एक्सपोर्ट की गई लाइब्रेरी बंद करने की सुविधा, सीधे तौर पर पैरंट रूल पर लागू होती है. यहां एक और उदाहरण दिया गया है: A, B पर निर्भर करता है. B, C और D पर निर्भर करता है. साथ ही, B, C को एक्सपोर्ट करता है, लेकिन D को नहीं. अब A के पास C का ऐक्सेस है, लेकिन D का नहीं. अब अगर C और D ने कुछ लाइब्रेरी एक्सपोर्ट की हैं, तो C' और D' के तौर पर, A सिर्फ़ C' को ऐक्सेस कर सकता है, लेकिन D' को नहीं.
अहम जानकारी: एक्सपोर्ट किया गया नियम, सामान्य डिपेंडेंसी नहीं होता. पिछले उदाहरण के मुताबिक, अगर B, C को एक्सपोर्ट करता है और उसे इस्तेमाल भी करना चाहता है, तो उसे C को अपने |
javabuilder_jvm_flags
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू |
javacopts
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू कंपाइलर के इन विकल्पों को, ग्लोबल कंपाइलर के विकल्पों के बाद javac को पास किया जाता है. |
neverlink
|
बूलियन; डिफ़ॉल्ट वैल्यू tools.jar हैं.
ध्यान दें कि अगर रनटाइम लाइब्रेरी, कंपाइलेशन लाइब्रेरी से अलग है, तो आपको यह पक्का करना होगा कि वह सिर्फ़ उन जगहों पर अलग हो जहां JLS, कंपाइलर को इनलाइन करने की अनुमति नहीं देता है. साथ ही, यह JLS के सभी आने वाले वर्शन के लिए लागू होना चाहिए. |
plugins
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू java_plugin , इस नियम के बनने पर लागू होगा. लाइब्रेरी को उन डिपेंडेंसी से भी प्लगिन मिल सकते हैं जो exported_plugins का इस्तेमाल करती हैं. इस नियम के नतीजे के तौर पर जनरेट की गई जार फ़ाइल में, प्लगिन से जनरेट किए गए संसाधन शामिल होंगे.
|
proguard_specs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू android_binary टारगेट में जोड़ दिया जाएगा.
यहां शामिल की गई फ़ाइलों में सिर्फ़ आइडमपोटेंट नियम होने चाहिए. जैसे, -dontnote, -dontwarn,
assumenosideeffects, और -keep से शुरू होने वाले नियम. अन्य विकल्प सिर्फ़ android_binary के proguard_specs में दिख सकते हैं, ताकि यह पक्का किया जा सके कि मर्ज किए गए विकल्प एक जैसे न हों.
|
resource_strip_prefix
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू
अगर पाथ प्रीफ़िक्स दिया गया है, तो इसे |
runtime_deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू deps की तरह, ये रनटाइम क्लासपाथ पर दिखेंगे. हालांकि, उनसे अलग, ये कंपाइल-टाइम क्लासपाथ पर नहीं दिखेंगे. सिर्फ़ रनटाइम पर ज़रूरी डिपेंडेंसी यहां दी जानी चाहिए. डिपेंडेंसी-विश्लेषण टूल को उन टारगेट को अनदेखा करना चाहिए जो runtime_deps और deps , दोनों में दिखते हैं.
|
java_test
नियम का सोर्स देखेंjava_test(name, deps, srcs, data, resources, add_exports, add_opens, args, aspect_hints, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, package_metadata, 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()
नियम, Java टेस्ट को कंपाइल करता है. टेस्ट, आपके टेस्ट कोड के चारों ओर एक बाइनरी रैपर होता है. मुख्य क्लास को कंपाइल करने के बजाय, टेस्ट रनर के मुख्य तरीके को लागू किया जाता है.
इंप्लिसिट आउटपुट टारगेट
name.jar
: यह एक Java संग्रह है.name_deploy.jar
: डिप्लॉयमेंट के लिए सही Java संग्रह. (इसे सिर्फ़ तब बनाया जाता है, जब साफ़ तौर पर अनुरोध किया जाता है.) ज़्यादा जानकारी के लिए,name_deploy.jar
java_binary से मिले आउटपुटname_deploy.jar
का ब्यौरा देखें.
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
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू
उन संसाधनों की सूची जो Java ट्री के रूट में मौजूद होने चाहिए. इस एट्रिब्यूट का मकसद सिर्फ़ तीसरे पक्ष की उन लाइब्रेरी के साथ काम करना है जिनके संसाधनों को क्लासपाथ पर |
create_executable
|
बूलियन; डिफ़ॉल्ट वैल्यू java_single_jar का इस्तेमाल करें.
|
deploy_manifest_lines
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू META-INF/manifest.mf टारगेट के लिए जनरेट की गई META-INF/manifest.mf फ़ाइल में जोड़ने के लिए लाइनों की सूची.*_deploy.jar इस एट्रिब्यूट के कॉन्टेंट को "बदलाव करें" सुविधा का इस्तेमाल करके बदला नहीं जा सकता.
|
javacopts
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू कंपाइलर के इन विकल्पों को, ग्लोबल कंपाइलर के विकल्पों के बाद javac को पास किया जाता है. |
jvm_flags
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू Java बाइनरी के लिए रैपर स्क्रिप्ट में CLASSPATH की परिभाषा शामिल होती है. इससे सभी डिपेंडेंट जार फ़ाइलें मिलती हैं. साथ ही, यह सही Java इंटरप्रेटर को शुरू करती है.
रैपर स्क्रिप्ट से जनरेट की गई कमांड लाइन में, मुख्य क्लास का नाम शामिल होता है. इसके बाद, ध्यान दें कि इस एट्रिब्यूट का |
launcher
|
लेबल; डिफ़ॉल्ट वैल्यू bin/java प्रोग्राम के बजाय, Java प्रोग्राम को चलाने के लिए किया जाएगा.
टारगेट cc_binary होना चाहिए. इस एट्रिब्यूट की वैल्यू के तौर पर, ऐसे किसी भी cc_binary का इस्तेमाल किया जा सकता है जो
Java Invocation API लागू करता है.
डिफ़ॉल्ट रूप से, Bazel सामान्य JDK लॉन्चर (bin/java या java.exe) का इस्तेमाल करेगा. इससे जुड़ा ध्यान दें कि आपकी नेटिव (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 ) क्लास का इस्तेमाल करें. साथ ही, टेस्ट रनर को टेस्ट क्लास, bazel.test_suite सिस्टम प्रॉपर्टी की वैल्यू के तौर पर दें.
इसका इस्तेमाल, डिफ़ॉल्ट व्यवहार को बदलने के लिए किया जा सकता है. डिफ़ॉल्ट व्यवहार यह है कि java_test नियमों के लिए टेस्ट रनर का इस्तेमाल किया जाता है और java_binary नियमों के लिए इसका इस्तेमाल नहीं किया जाता है. ऐसा हो सकता है कि आपको यह सुविधा इस्तेमाल न करनी हो. इसका इस्तेमाल, AllTest
ऐसे नियमों के लिए किया जाता है जिन्हें किसी दूसरे नियम से लागू किया जाता है. उदाहरण के लिए, जांच शुरू करने से पहले डेटाबेस सेट अप करने के लिए. AllTest
नियम को java_binary के तौर पर एलान किया जाना चाहिए. हालांकि, इसे अब भी टेस्ट रनर को मुख्य एंट्री पॉइंट के तौर पर इस्तेमाल करना चाहिए.
टेस्ट रनर क्लास के नाम को main_class एट्रिब्यूट का इस्तेमाल करके बदला जा सकता है.
|
java_package_configuration
नियम का सोर्स देखेंjava_package_configuration(name, data, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, output_licenses, package_metadata, packages, restricted_to, system, 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 का वह सेट जिस पर कॉन्फ़िगरेशन लागू किया जाना चाहिए.
|
system
|
लेबल; डिफ़ॉल्ट वैल्यू |
java_plugin
नियम का सोर्स देखेंjava_plugin(name, deps, srcs, data, resources, add_exports, add_opens, aspect_hints, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, package_metadata, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_plugin
, Bazel की मदद से चलाए जाने वाले Java कंपाइलर के लिए प्लगिन तय करता है. सिर्फ़ एनोटेशन प्रोसेसर वाले प्लगिन इस्तेमाल किए जा सकते हैं. java_library
या java_binary
नियम, plugins
एट्रिब्यूट के ज़रिए प्लगिन पर निर्भर रहकर उन्हें चला सकते हैं. java_library
, प्लगिन को उन लाइब्रेरी में भी अपने-आप एक्सपोर्ट कर सकता है जो java_library
का इस्तेमाल करके सीधे तौर पर इस पर निर्भर करती हैं.exported_plugins
इंप्लिसिट आउटपुट टारगेट
libname.jar
: यह एक Java संग्रह है.
आर्ग्युमेंट, java_library() के आर्ग्युमेंट का सबसेट है. साथ ही, इनके सिमैंटिक भी एक जैसे हैं. हालांकि, इनमें processor_class
और generates_api
आर्ग्युमेंट जोड़े गए हैं.
तर्क
विशेषताएं | |
---|---|
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 हैं.
ध्यान दें कि अगर रनटाइम लाइब्रेरी, कंपाइलेशन लाइब्रेरी से अलग है, तो आपको यह पक्का करना होगा कि वह सिर्फ़ उन जगहों पर अलग हो जहां JLS, कंपाइलर को इनलाइन करने की अनुमति नहीं देता है. साथ ही, यह JLS के सभी आने वाले वर्शन के लिए लागू होना चाहिए. |
output_licenses
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू |
plugins
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू java_plugin , इस नियम के बनने पर लागू होगा. लाइब्रेरी को उन डिपेंडेंसी से भी प्लगिन मिल सकते हैं जो exported_plugins का इस्तेमाल करती हैं. इस नियम के नतीजे के तौर पर जनरेट की गई जार फ़ाइल में, प्लगिन से जनरेट किए गए संसाधन शामिल होंगे.
|
processor_class
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
proguard_specs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू android_binary टारगेट में जोड़ दिया जाएगा.
यहां शामिल की गई फ़ाइलों में सिर्फ़ आइडमपोटेंट नियम होने चाहिए. जैसे, -dontnote, -dontwarn,
assumenosideeffects, और -keep से शुरू होने वाले नियम. अन्य विकल्प सिर्फ़ android_binary के proguard_specs में दिख सकते हैं, ताकि यह पक्का किया जा सके कि मर्ज किए गए विकल्प एक जैसे न हों.
|
resource_strip_prefix
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू
अगर पाथ प्रीफ़िक्स दिया गया है, तो इसे |
java_runtime
नियम का सोर्स देखेंjava_runtime(name, srcs, aspect_hints, compatible_with, default_cds, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, package_metadata, 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 टारगेट के लिए हर्मेटिक मोड चालू होता है, तब 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_single_jar
नियम का सोर्स देखेंjava_single_jar(name, deps, aspect_hints, compatible_with, compress, deploy_env, deploy_manifest_lines, deprecation, exclude_build_data, exec_compatible_with, exec_group_compatible_with, exec_properties, features, multi_release, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू |
compress
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
deploy_env
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू |
deploy_manifest_lines
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू META-INF/manifest.mf फ़ाइल में जोड़ी जाने वाली लाइनों की सूची.
|
exclude_build_data
|
बूलियन; डिफ़ॉल्ट वैल्यू |
multi_release
|
बूलियन; डिफ़ॉल्ट वैल्यू |
java_toolchain
नियम का सोर्स देखेंjava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, aspect_hints, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, exec_compatible_with, exec_group_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, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, package_metadata, 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
|
शून्य; डिफ़ॉल्ट वैल्यू |
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
|
लेबल; डिफ़ॉल्ट वैल्यू |
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
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू |