জাভা নিয়ম

একটি সমস্যা রিপোর্ট করুন উৎস দেখুন

নিয়ম

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)

একটি জাভা আর্কাইভ ("জার ফাইল") তৈরি করে, পাশাপাশি নিয়মের মতো একই নামের একটি র‍্যাপার শেল স্ক্রিপ্ট তৈরি করে৷ র্যাপার শেল স্ক্রিপ্ট একটি ক্লাসপাথ ব্যবহার করে যার মধ্যে অন্যান্য জিনিসের মধ্যে, প্রতিটি লাইব্রেরির জন্য একটি জার ফাইল রয়েছে যার উপর বাইনারি নির্ভর করে। র্যাপার শেল স্ক্রিপ্ট চালানোর সময়, যেকোন খালি JAVABIN এনভায়রনমেন্ট ভেরিয়েবল Bazel-এর --java_runtime_version ফ্ল্যাগের মাধ্যমে নির্দিষ্ট সংস্করণের উপর অগ্রাধিকার পাবে।

মোড়ক স্ক্রিপ্ট বেশ কয়েকটি অনন্য পতাকা গ্রহণ করে। রেপার দ্বারা গৃহীত কনফিগারযোগ্য পতাকা এবং পরিবেশ ভেরিয়েবলের তালিকার জন্য //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 টার্গেট তৈরি করা একটি ম্যানিফেস্ট সহ একটি স্বয়ংসম্পূর্ণ জার ফাইল তৈরি করে যা এটিকে java -jar কমান্ড বা wrapper স্ক্রিপ্টের --singlejar বিকল্পের সাথে চালানোর অনুমতি দেয়। র্যাপার স্ক্রিপ্ট ব্যবহার করা java -jar এ পছন্দের কারণ এটি JVM ফ্ল্যাগ এবং নেটিভ লাইব্রেরি লোড করার বিকল্পগুলিও পাস করে।

    ডিপ্লোয় জারটিতে এমন সমস্ত ক্লাস রয়েছে যা একটি ক্লাসলোডার দ্বারা পাওয়া যাবে যেটি বাইনারির র্যাপার স্ক্রিপ্ট থেকে শুরু থেকে শেষ পর্যন্ত ক্লাসপথ অনুসন্ধান করে। এটিতে নির্ভরতার জন্য প্রয়োজনীয় নেটিভ লাইব্রেরিও রয়েছে। রানটাইমে এগুলি স্বয়ংক্রিয়ভাবে JVM-এ লোড হয়।

    যদি আপনার লক্ষ্য একটি লঞ্চার বৈশিষ্ট্য নির্দিষ্ট করে, তাহলে একটি সাধারণ JAR ফাইলের পরিবর্তে, _deploy.jar একটি নেটিভ বাইনারি হবে। এটিতে লঞ্চার এবং আপনার নিয়মের যেকোন নেটিভ (C++) নির্ভরতা থাকবে, সবগুলি একটি স্ট্যাটিক বাইনারিতে সংযুক্ত থাকবে। প্রকৃত জার ফাইলের বাইটগুলি সেই নেটিভ বাইনারিতে যুক্ত করা হবে, যা এক্সিকিউটেবল এবং জাভা কোড উভয় ধারণ করে একটি একক বাইনারি ব্লব তৈরি করবে। আপনি ফলস্বরূপ জার ফাইলটি সরাসরি চালাতে পারেন যেমন আপনি কোনও নেটিভ বাইনারি চালান।

  • name _deploy-src.jar : লক্ষ্যের ট্রানজিটিভ ক্লোজার থেকে সংগৃহীত উৎসগুলি ধারণকারী একটি সংরক্ষণাগার। এগুলি deploy.jar এর ক্লাসগুলির সাথে মিলবে যেখানে জারগুলির কোনও মিলিত উত্স জার নেই৷

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

নাম ; প্রয়োজনীয়

এই লক্ষ্যের জন্য একটি অনন্য নাম।


সোর্স ফাইলের নাম ব্যবহার করা ভাল অভ্যাস যা অ্যাপ্লিকেশনের প্রধান এন্ট্রি পয়েন্ট (এক্সটেনশন বিয়োগ)। উদাহরণস্বরূপ, যদি আপনার এন্ট্রি পয়েন্টকে Main.java বলা হয়, তাহলে আপনার নাম হতে পারে Main
deps

লেবেলের তালিকা; ডিফল্ট হল []

অন্যান্য লাইব্রেরির তালিকা টার্গেটের সাথে সংযুক্ত করতে হবে। বেশিরভাগ বিল্ড নিয়ম দ্বারা সংজ্ঞায়িত সাধারণ বৈশিষ্ট্যগুলিতে deps সম্পর্কে সাধারণ মন্তব্যগুলি দেখুন।
srcs

লেবেলের তালিকা; ডিফল্ট হল []

লক্ষ্য তৈরি করতে প্রক্রিয়া করা হয় যে উৎস ফাইলের তালিকা. এই বৈশিষ্ট্য প্রায় সবসময় প্রয়োজন হয়; নীচের ব্যতিক্রম দেখুন।

.java টাইপের সোর্স ফাইল কম্পাইল করা হয়। জেনারেটেড .java ফাইলের ক্ষেত্রে সাধারণত ফাইলের নামের পরিবর্তে এখানে জেনারেট করার নিয়মের নাম রাখার পরামর্শ দেওয়া হয়। এটি শুধুমাত্র পঠনযোগ্যতাকে উন্নত করে না বরং নিয়মটিকে ভবিষ্যতের পরিবর্তনের জন্য আরও স্থিতিস্থাপক করে তোলে: যদি জেনারেট করার নিয়ম ভবিষ্যতে বিভিন্ন ফাইল তৈরি করে, তাহলে আপনাকে শুধুমাত্র একটি জায়গা ঠিক করতে হবে: জেনারেট করার নিয়মের outs । আপনার deps এ জেনারেট করার নিয়ম তালিকাভুক্ত করা উচিত নয় কারণ এটি একটি নো-অপ।

.srcjar ধরনের সোর্স ফাইলগুলি আনপ্যাক করা এবং কম্পাইল করা হয়। (যদি আপনি একটি জেনরুল সহ .java ফাইলগুলির একটি সেট তৈরি করতে চান তবে এটি কার্যকর।)

নিয়ম: যদি নিয়মটি (সাধারণত genrule বা filegroup ) উপরে তালিকাভুক্ত যেকোন ফাইল তৈরি করে, সেগুলি উৎস ফাইলের জন্য বর্ণিত একইভাবে ব্যবহার করা হবে।

এই যুক্তিটি প্রায় সবসময়ই প্রয়োজন হয়, যদি একটি main_class অ্যাট্রিবিউট রানটাইম ক্লাসপথে একটি ক্লাস নির্দিষ্ট করে বা আপনি runtime_deps আর্গুমেন্ট নির্দিষ্ট করেন।

resources

লেবেলের তালিকা; ডিফল্ট হল []

একটি জাভা জারে অন্তর্ভুক্ত করার জন্য ডেটা ফাইলগুলির একটি তালিকা৷

রিসোর্স নির্দিষ্ট করা থাকলে, কম্পাইলেশনের মাধ্যমে উত্পাদিত সাধারণ .class ফাইলগুলির সাথে সেগুলিকে জারে বান্ডিল করা হবে। জার ফাইলের ভিতরের সংস্থানগুলির অবস্থান প্রকল্পের কাঠামো দ্বারা নির্ধারিত হয়। Bazel প্রথমে Maven এর স্ট্যান্ডার্ড ডিরেক্টরি লেআউটের সন্ধান করে, (একটি "src" ডিরেক্টরির পরে একটি "রিসোর্স" ডিরেক্টরি নাতি)। যদি এটি না পাওয়া যায়, Bazel তারপর "java" বা "javatests" নামের শীর্ষস্থানীয় ডিরেক্টরির সন্ধান করে (উদাহরণস্বরূপ, যদি একটি সংস্থান <workspace root>/x/java/y/java/z এ থাকে , এর পথ রিসোর্সটি y/java/z হবে। এই হিউরিস্টিকটি ওভাররাইড করা যাবে না, তবে, resource_strip_prefix অ্যাট্রিবিউটটি রিসোর্স ফাইলের জন্য একটি নির্দিষ্ট বিকল্প ডিরেক্টরি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে।

রিসোর্স হতে পারে সোর্স ফাইল বা জেনারেট করা ফাইল।

classpath_resources

লেবেলের তালিকা; ডিফল্ট হল []

অন্য কোন উপায় না থাকলে এই বিকল্পটি ব্যবহার করবেন না)

সম্পদের একটি তালিকা যা অবশ্যই জাভা গাছের মূলে অবস্থিত। এই অ্যাট্রিবিউটের একমাত্র উদ্দেশ্য হল তৃতীয় পক্ষের লাইব্রেরিগুলিকে সমর্থন করা যেগুলির জন্য তাদের সংস্থানগুলিকে ক্লাসপথে ঠিক "myconfig.xml" হিসাবে পাওয়া যেতে হবে। এটি শুধুমাত্র বাইনারিগুলিতে অনুমোদিত এবং লাইব্রেরিতে নয়, নামস্থান দ্বন্দ্বের বিপদের কারণে৷

create_executable

বুলিয়ান; কনফিগারযোগ্য নয় ; ডিফল্ট True

অপ্রচলিত, পরিবর্তে java_single_jar ব্যবহার করুন।
deploy_env

লেবেলের তালিকা; ডিফল্ট হল []

অন্যান্য java_binary লক্ষ্যগুলির একটি তালিকা যা এই বাইনারির জন্য স্থাপনার পরিবেশ উপস্থাপন করে। একটি প্লাগইন তৈরি করার সময় এই বৈশিষ্ট্যটি সেট করুন যা অন্য java_binary দ্বারা লোড করা হবে।
এই অ্যাট্রিবিউট সেট করার ফলে এই বাইনারিটির রানটাইম ক্লাসপথ (এবং ডিপ্লয় জার) থেকে সমস্ত নির্ভরতা বাদ দেওয়া হয় যা এই বাইনারি এবং deploy_env এ নির্দিষ্ট করা লক্ষ্যগুলির মধ্যে ভাগ করা হয়।
deploy_manifest_lines

স্ট্রিং তালিকা; ডিফল্ট হল []

*_deploy.jar টার্গেটের জন্য তৈরি করা META-INF/manifest.mf ফাইলে যোগ করার জন্য লাইনের একটি তালিকা। এই বৈশিষ্ট্যের বিষয়বস্তু "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপনের বিষয় নয়
javacopts

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরির জন্য অতিরিক্ত কম্পাইলার অপশন। "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপন এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।

এই কম্পাইলার বিকল্পগুলি গ্লোবাল কম্পাইলার বিকল্পগুলির পরে javac-এ পাস করা হয়।

jvm_flags

স্ট্রিং তালিকা; ডিফল্ট হল []

এই বাইনারি চালানোর জন্য তৈরি করা র্যাপার স্ক্রিপ্টে এম্বেড করার জন্য পতাকার একটি তালিকা। $(অবস্থান) এবং "মেক ভেরিয়েবল" প্রতিস্থাপন, এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।

একটি জাভা বাইনারির জন্য র‍্যাপার স্ক্রিপ্টে একটি CLASSPATH সংজ্ঞা রয়েছে (সমস্ত নির্ভরশীল জার খুঁজে বের করার জন্য) এবং সঠিক জাভা দোভাষীকে আহ্বান করে। র‍্যাপার স্ক্রিপ্ট দ্বারা উত্পন্ন কমান্ড লাইনে একটি "$@" দ্বারা অনুসরণ করা প্রধান শ্রেণীর নাম অন্তর্ভুক্ত থাকে যাতে আপনি ক্লাসের নামের পরে অন্যান্য আর্গুমেন্টগুলি পাস করতে পারেন। যাইহোক, JVM দ্বারা পার্স করার উদ্দেশ্যে আর্গুমেন্টগুলি অবশ্যই কমান্ড লাইনে ক্লাসের নামের আগে নির্দিষ্ট করতে হবে। ক্লাসের নাম তালিকাভুক্ত হওয়ার আগে jvm_flags এর বিষয়বস্তু র্যাপার স্ক্রিপ্টে যোগ করা হয়।

মনে রাখবেন যে এই বৈশিষ্ট্যটি *_deploy.jar আউটপুটগুলিতে কোন প্রভাব ফেলে না

launcher

লেবেল ; ডিফল্ট None

একটি বাইনারি নির্দিষ্ট করুন যা JDK এর সাথে অন্তর্ভুক্ত সাধারণ bin/java প্রোগ্রামের পরিবর্তে আপনার জাভা প্রোগ্রাম চালানোর জন্য ব্যবহার করা হবে। লক্ষ্য অবশ্যই একটি cc_binary হতে হবে। যেকোন cc_binary যা Java Invocation API প্রয়োগ করে এই বৈশিষ্ট্যের জন্য একটি মান হিসাবে নির্দিষ্ট করা যেতে পারে।

ডিফল্টরূপে, Bazel সাধারণ JDK লঞ্চার (bin/java বা java.exe) ব্যবহার করবে।

সম্পর্কিত --java_launcher Bazel পতাকা শুধুমাত্র সেই java_binary এবং java_test লক্ষ্যগুলিকে প্রভাবিত করে যেগুলি একটি launcher বৈশিষ্ট্য নির্দিষ্ট করেনি

মনে রাখবেন যে আপনি JDK লঞ্চার বা অন্য লঞ্চার ব্যবহার করছেন কিনা তার উপর নির্ভর করে আপনার নেটিভ (C++, SWIG, JNI) নির্ভরতা ভিন্নভাবে তৈরি হবে:

  • আপনি যদি সাধারণ JDK লঞ্চার (ডিফল্ট) ব্যবহার করেন, তাহলে নেটিভ নির্ভরতাগুলিকে {name}_nativedeps.so নামে একটি শেয়ার্ড লাইব্রেরি হিসেবে তৈরি করা হয়, যেখানে {name} এই java_binary নিয়মের name বৈশিষ্ট্য। এই কনফিগারেশনে লিঙ্কার দ্বারা অব্যবহৃত কোড সরানো হয় না
  • আপনি যদি অন্য কোনো লঞ্চার ব্যবহার করেন, তাহলে নেটিভ (C++) নির্ভরতাগুলি স্ট্যাটিকভাবে {name}_nativedeps নামক একটি বাইনারিতে লিঙ্ক করা হয়, যেখানে {name} এই java_binary নিয়মের name বৈশিষ্ট্য। এই ক্ষেত্রে, লিঙ্কার ফলাফল বাইনারি থেকে অব্যবহৃত বলে মনে করে যেকোন কোড সরিয়ে দেবে, যার মানে শুধুমাত্র JNI-এর মাধ্যমে অ্যাক্সেস করা কোনও C++ কোড লিঙ্ক করা যাবে না যদি না সেই cc_library টার্গেট সর্বদা alwayslink = 1 নির্দিষ্ট করে।

ডিফল্ট JDK লঞ্চার ছাড়া অন্য কোনো লঞ্চার ব্যবহার করার সময়, *_deploy.jar আউটপুটের বিন্যাস পরিবর্তিত হয়। বিস্তারিত জানার জন্য প্রধান java_binary ডক্স দেখুন।

main_class

স্ট্রিং; ডিফল্ট হল ""

এন্ট্রি পয়েন্ট হিসাবে ব্যবহার করার জন্য main() পদ্ধতি সহ ক্লাসের নাম। যদি একটি নিয়ম এই বিকল্পটি ব্যবহার করে, তাহলে এটির জন্য srcs=[...] তালিকার প্রয়োজন নেই। সুতরাং, এই অ্যাট্রিবিউটের সাহায্যে একজন জাভা লাইব্রেরি থেকে একটি এক্সিকিউটেবল তৈরি করতে পারে যাতে ইতিমধ্যে এক বা একাধিক main() পদ্ধতি রয়েছে।

এই বৈশিষ্ট্যের মান একটি শ্রেণীর নাম, একটি উৎস ফাইল নয়। ক্লাসটি রানটাইমে উপলব্ধ হতে হবে: এটি এই নিয়ম দ্বারা সংকলিত হতে পারে ( srcs থেকে) বা সরাসরি বা ট্রানজিটিভ নির্ভরতা ( runtime_deps বা deps মাধ্যমে) দ্বারা সরবরাহ করা যেতে পারে। ক্লাস অনুপলব্ধ হলে, বাইনারি রানটাইমে ব্যর্থ হবে; বিল্ড-টাইম চেক নেই।

plugins

লেবেলের তালিকা; ডিফল্ট হল []

কম্পাইল-টাইমে চালানোর জন্য জাভা কম্পাইলার প্লাগইন। যখনই এই নিয়মটি তৈরি করা হবে তখন এই বৈশিষ্ট্যে নির্দিষ্ট করা প্রতিটি java_plugin চালানো হবে। একটি লাইব্রেরি exported_plugins ব্যবহার করে এমন নির্ভরতা থেকে প্লাগইনগুলিও উত্তরাধিকার সূত্রে পেতে পারে। প্লাগইন দ্বারা উত্পন্ন সম্পদ এই নিয়মের ফলে জার মধ্যে অন্তর্ভুক্ত করা হবে.
resource_jars

লেবেলের তালিকা; ডিফল্ট হল []

অপ্রচলিত: পরিবর্তে java_import এবং deps বা runtime_deps ব্যবহার করুন।
resource_strip_prefix

স্ট্রিং; ডিফল্ট হল ""

জাভা রিসোর্স থেকে স্ট্রিপ করার জন্য পাথ প্রিফিক্স।

নির্দিষ্ট করা থাকলে, এই পাথ উপসর্গটি resources অ্যাট্রিবিউটের প্রতিটি ফাইল থেকে ছিনিয়ে নেওয়া হয়। এই ডিরেক্টরির অধীনে না থাকা একটি সংস্থান ফাইলের জন্য এটি একটি ত্রুটি। যদি নির্দিষ্ট না করা হয় (ডিফল্ট), রিসোর্স ফাইলের পাথ সোর্স ফাইলের জাভা প্যাকেজের মতো একই যুক্তি অনুসারে নির্ধারিত হয়। উদাহরণস্বরূপ, stuff/java/foo/bar/a.txt এ একটি উৎস ফাইল foo/bar/a.txt এ অবস্থিত হবে।

runtime_deps

লেবেলের তালিকা; ডিফল্ট হল []

শুধুমাত্র রানটাইমে চূড়ান্ত বাইনারি বা পরীক্ষার জন্য উপলব্ধ করা লাইব্রেরি। সাধারণ deps এর মতো, এগুলি রানটাইম ক্লাসপথে প্রদর্শিত হবে, কিন্তু তাদের বিপরীতে, কম্পাইল-টাইম ক্লাসপথে নয়। শুধুমাত্র রানটাইমে প্রয়োজনীয় নির্ভরতা এখানে তালিকাভুক্ত করা উচিত। নির্ভরতা-বিশ্লেষণ সরঞ্জামের লক্ষ্যগুলি উপেক্ষা করা উচিত যা runtime_deps এবং deps উভয় ক্ষেত্রেই প্রদর্শিত হয়।
stamp

পূর্ণসংখ্যা; ডিফল্ট হল -1

বাইনারিতে বিল্ড তথ্য এনকোড করা হবে কিনা। সম্ভাব্য মান:
  • stamp = 1 : সর্বদা বিল্ড তথ্যকে বাইনারিতে স্ট্যাম্প করুন, এমনকি --nostamp বিল্ডেও। এই সেটিংটি এড়ানো উচিত , কারণ এটি সম্ভাব্যভাবে বাইনারির জন্য দূরবর্তী ক্যাশিং এবং এটির উপর নির্ভরশীল যেকোনো ডাউনস্ট্রিম অ্যাকশনকে মেরে ফেলে।
  • stamp = 0 : সর্বদা ধ্রুবক মান দ্বারা বিল্ড তথ্য প্রতিস্থাপন করুন। এটি ভাল বিল্ড ফলাফল ক্যাশিং দেয়।
  • stamp = -1 : বিল্ড তথ্যের এম্বেডিং --[no]stamp পতাকা দ্বারা নিয়ন্ত্রিত হয়।

স্ট্যাম্পযুক্ত বাইনারিগুলি পুনর্নির্মাণ করা হয় না যদি না তাদের নির্ভরতা পরিবর্তন হয়।

use_launcher

বুলিয়ান; ডিফল্ট True

বাইনারি একটি কাস্টম লঞ্চার ব্যবহার করা উচিত কিনা।

এই অ্যাট্রিবিউটটি মিথ্যাতে সেট করা থাকলে, লঞ্চার অ্যাট্রিবিউট এবং সম্পর্কিত --java_launcher পতাকা এই টার্গেটের জন্য উপেক্ষা করা হবে।

use_testrunner

বুলিয়ান; ডিফল্ট False

একটি জাভা প্রোগ্রামের প্রধান এন্ট্রি পয়েন্ট হিসাবে টেস্ট রানার (ডিফল্টরূপে com.google.testing.junit.runner.BazelTestRunner ) ক্লাসটি ব্যবহার করুন এবং 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)

এই নিয়মটি java_library এবং java_binary নিয়মের জন্য লাইব্রেরি হিসাবে precompiled .jar ফাইল ব্যবহার করার অনুমতি দেয়।

উদাহরণ


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

যুক্তি

গুণাবলী
name

নাম ; প্রয়োজনীয়

এই লক্ষ্যের জন্য একটি অনন্য নাম।

deps

লেবেলের তালিকা; ডিফল্ট হল []

অন্যান্য লাইব্রেরির তালিকা টার্গেটের সাথে সংযুক্ত করতে হবে। java_library.deps দেখুন।
data

লেবেলের তালিকা; ডিফল্ট হল []

রানটাইমে এই নিয়মের জন্য প্রয়োজনীয় ফাইলের তালিকা।
add_exports

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরিটিকে প্রদত্ত module বা package অ্যাক্সেস করার অনুমতি দিন।

এটি javac এবং JVM --add-exports= ফ্ল্যাগের সাথে মিলে যায়।

add_opens

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরিটিকে প্রদত্ত module বা package প্রতিফলিতভাবে অ্যাক্সেস করার অনুমতি দিন।

এটি javac এবং JVM --add-opens= ফ্ল্যাগের সাথে মিলে যায়।

constraints

স্ট্রিং তালিকা; ডিফল্ট হল []

একটি জাভা লাইব্রেরি হিসাবে এই নিয়মের উপর আরোপিত অতিরিক্ত সীমাবদ্ধতা।
exports

লেবেলের তালিকা; ডিফল্ট হল []

এই নিয়ম ব্যবহারকারীদের জন্য উপলব্ধ করা লক্ষ্য. java_library.exports দেখুন।
jars

লেবেলের তালিকা; প্রয়োজনীয়

জাভা টার্গেটে দেওয়া JAR ফাইলের তালিকা যা এই টার্গেটের উপর নির্ভর করে।

বুলিয়ান; ডিফল্ট False

শুধুমাত্র সংকলনের জন্য এই লাইব্রেরিটি ব্যবহার করুন এবং রানটাইমে নয়। কার্যকরী করার সময় রানটাইম পরিবেশ দ্বারা লাইব্রেরি প্রদান করা হলে দরকারী। এই ধরনের লাইব্রেরির উদাহরণ হল IDE প্ল্যাগ-ইনগুলির জন্য IDE APIs বা একটি আদর্শ JDK-তে চলমান যেকোনো কিছুর জন্য tools.jar
proguard_specs

লেবেলের তালিকা; ডিফল্ট হল []

Proguard স্পেসিফিকেশন হিসাবে ব্যবহার করা ফাইল. এগুলি Proguard দ্বারা ব্যবহৃত স্পেসিফিকেশনের সেট বর্ণনা করবে। নির্দিষ্ট করা থাকলে, এই লাইব্রেরির উপর নির্ভর করে যেকোন android_binary টার্গেটে সেগুলি যোগ করা হবে। এখানে অন্তর্ভুক্ত ফাইলগুলিতে শুধুমাত্র অদম্য বিধি থাকতে হবে, যেমন -dontnote, -dontwarn, assumenosidefects, এবং নিয়ম যা -keep দিয়ে শুরু হয়। অন্যান্য বিকল্পগুলি শুধুমাত্র android_binary এর proguard_specs-এ উপস্থিত হতে পারে, যাতে অ-টাউটোলজিক্যাল মার্জ নিশ্চিত করা যায়।
runtime_deps

লেবেলের তালিকা; ডিফল্ট হল []

শুধুমাত্র রানটাইমে চূড়ান্ত বাইনারি বা পরীক্ষার জন্য উপলব্ধ করা লাইব্রেরি। java_library.runtime_deps দেখুন।
srcjar

লেবেল ; ডিফল্ট None

একটি JAR ফাইল যাতে কম্পাইল করা JAR ফাইলের সোর্স কোড থাকে।

java_library

দেখুন নিয়ম উৎস
java_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)

এই নিয়মটি একটি .jar ফাইলের সাথে উত্সগুলিকে সংকলন করে এবং লিঙ্ক করে।

অন্তর্নিহিত আউটপুট

  • lib name .jar : একটি জাভা আর্কাইভ যাতে ক্লাস ফাইল থাকে।
  • lib name -src.jar : একটি আর্কাইভ যেখানে উৎস রয়েছে ("সোর্স জার")।

যুক্তি

গুণাবলী
name

নাম ; প্রয়োজনীয়

এই লক্ষ্যের জন্য একটি অনন্য নাম।

deps

লেবেলের তালিকা; ডিফল্ট হল []

এই লাইব্রেরিতে লিঙ্ক করার জন্য লাইব্রেরির তালিকা। বেশিরভাগ বিল্ড নিয়ম দ্বারা সংজ্ঞায়িত সাধারণ বৈশিষ্ট্যগুলিতে deps সম্পর্কে সাধারণ মন্তব্যগুলি দেখুন।

deps এ তালিকাভুক্ত java_library নিয়ম দ্বারা নির্মিত জারগুলি এই নিয়মের কম্পাইল-টাইম ক্লাসপাথে থাকবে। উপরন্তু তাদের deps , runtime_deps এবং exports ট্রানজিটিভ ক্লোজার রানটাইম ক্লাসপাথে হবে।

বিপরীতে, data অ্যাট্রিবিউটের লক্ষ্যগুলি রানফাইলগুলিতে অন্তর্ভুক্ত করা হয় তবে কম্পাইল-টাইম বা রানটাইম ক্লাসপাথের মধ্যে নেই।

srcs

লেবেলের তালিকা; ডিফল্ট হল []

লক্ষ্য তৈরি করতে প্রক্রিয়া করা হয় যে উৎস ফাইলের তালিকা. এই বৈশিষ্ট্য প্রায় সবসময় প্রয়োজন হয়; নীচের ব্যতিক্রম দেখুন।

.java টাইপের সোর্স ফাইল কম্পাইল করা হয়। জেনারেটেড .java ফাইলের ক্ষেত্রে সাধারণত ফাইলের নামের পরিবর্তে এখানে জেনারেট করার নিয়মের নাম রাখার পরামর্শ দেওয়া হয়। এটি শুধুমাত্র পঠনযোগ্যতাকে উন্নত করে না বরং নিয়মটিকে ভবিষ্যতের পরিবর্তনের জন্য আরও স্থিতিস্থাপক করে তোলে: যদি জেনারেট করার নিয়ম ভবিষ্যতে বিভিন্ন ফাইল তৈরি করে, তাহলে আপনাকে শুধুমাত্র একটি জায়গা ঠিক করতে হবে: জেনারেট করার নিয়মের outs । আপনার deps এ জেনারেট করার নিয়ম তালিকাভুক্ত করা উচিত নয় কারণ এটি একটি নো-অপ।

.srcjar ধরনের সোর্স ফাইলগুলি আনপ্যাক করা এবং কম্পাইল করা হয়। (যদি আপনি একটি জেনরুল সহ .java ফাইলগুলির একটি সেট তৈরি করতে চান তবে এটি কার্যকর।)

নিয়ম: যদি নিয়মটি (সাধারণত genrule বা filegroup ) উপরে তালিকাভুক্ত যেকোন ফাইল তৈরি করে, সেগুলি উৎস ফাইলের জন্য বর্ণিত একইভাবে ব্যবহার করা হবে।

.properties টাইপ সোর্স ফাইল সম্পদ হিসাবে বিবেচিত হয়.

অন্য সব ফাইল উপেক্ষা করা হয়, যতক্ষণ না উপরে বর্ণিত একটি ফাইল প্রকারের অন্তত একটি ফাইল থাকে। অন্যথায় একটি ত্রুটি উত্থাপিত হয়.

আপনি runtime_deps আর্গুমেন্ট উল্লেখ করলে এই যুক্তিটি প্রায় সবসময়ই প্রয়োজন হয়।

data

লেবেলের তালিকা; ডিফল্ট হল []

রানটাইমে এই লাইব্রেরির প্রয়োজনীয় ফাইলগুলির তালিকা৷ বেশিরভাগ বিল্ড নিয়ম দ্বারা সংজ্ঞায়িত সাধারণ বৈশিষ্ট্যগুলিতে data সম্পর্কে সাধারণ মন্তব্যগুলি দেখুন।

একটি java_library তৈরি করার সময়, Bazel এই ফাইলগুলিকে কোথাও রাখে না; যদি data ফাইলগুলি ফাইল তৈরি করা হয় তবে বেজেল সেগুলি তৈরি করে। এই java_library এর উপর নির্ভর করে এমন একটি পরীক্ষা তৈরি করার সময় Bazel data ফাইলগুলিকে রানফাইল এলাকায় কপি করে বা লিঙ্ক করে।

resources

লেবেলের তালিকা; ডিফল্ট হল []

একটি জাভা জারে অন্তর্ভুক্ত করার জন্য ডেটা ফাইলগুলির একটি তালিকা৷

রিসোর্স হতে পারে সোর্স ফাইল বা জেনারেট করা ফাইল।

রিসোর্স নির্দিষ্ট করা থাকলে, কম্পাইলেশনের মাধ্যমে উত্পাদিত সাধারণ .class ফাইলগুলির সাথে সেগুলিকে জারে বান্ডিল করা হবে। জার ফাইলের ভিতরের সংস্থানগুলির অবস্থান প্রকল্পের কাঠামো দ্বারা নির্ধারিত হয়। Bazel প্রথমে Maven এর স্ট্যান্ডার্ড ডিরেক্টরি লেআউটের সন্ধান করে, (একটি "src" ডিরেক্টরির পরে একটি "রিসোর্স" ডিরেক্টরি নাতি)। যদি এটি না পাওয়া যায়, Bazel তারপর "java" বা "javatests" নামের শীর্ষস্থানীয় ডিরেক্টরির সন্ধান করে (উদাহরণস্বরূপ, যদি একটি সংস্থান <workspace root>/x/java/y/java/z এ থাকে , এর পথ রিসোর্সটি y/java/z হবে। এই হিউরিস্টিকটি ওভাররাইড করা যাবে না, তবে, resource_strip_prefix অ্যাট্রিবিউটটি রিসোর্স ফাইলের জন্য একটি নির্দিষ্ট বিকল্প ডিরেক্টরি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে।

add_exports

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরিটিকে প্রদত্ত module বা package অ্যাক্সেস করার অনুমতি দিন।

এটি javac এবং JVM --add-exports= ফ্ল্যাগের সাথে মিলে যায়।

add_opens

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরিটিকে প্রদত্ত module বা package প্রতিফলিতভাবে অ্যাক্সেস করার অনুমতি দিন।

এটি javac এবং JVM --add-opens= ফ্ল্যাগের সাথে মিলে যায়।

bootclasspath

লেবেল ; ডিফল্ট None

সীমাবদ্ধ API, ব্যবহার করবেন না!
exported_plugins

লেবেলের তালিকা; ডিফল্ট হল []

এই লাইব্রেরির উপর সরাসরি নির্ভর করে এমন লাইব্রেরিতে রপ্তানি করার জন্য java_plugin এর তালিকা (যেমন টীকা প্রসেসর)।

java_plugin s-এর নির্দিষ্ট তালিকা যেকোন লাইব্রেরিতে প্রয়োগ করা হবে যা সরাসরি এই লাইব্রেরির উপর নির্ভর করে, ঠিক যেন সেই লাইব্রেরিটি plugins এই লেবেলগুলিকে স্পষ্টভাবে ঘোষণা করেছে।

exports

লেবেলের তালিকা; ডিফল্ট হল []

রপ্তানিকৃত লাইব্রেরি।

এখানে নিয়মগুলি তালিকাভুক্ত করা হলে সেগুলিকে পিতামাতার নিয়মগুলিতে উপলব্ধ করা হবে, যেন পিতামাতা স্পষ্টভাবে এই নিয়মগুলির উপর নির্ভর করে৷ এটি নিয়মিত (অ-রপ্তানিযোগ্য) deps জন্য সত্য নয়।

সারাংশ: একটি নিয়ম X Y- এ কোড অ্যাক্সেস করতে পারে যদি তাদের মধ্যে একটি নির্ভরতা পথ থাকে যা একটি deps প্রান্ত দিয়ে শুরু হয় এবং শূন্য বা তার বেশি exports প্রান্ত দিয়ে শুরু হয়। এটা বোঝানোর জন্য কিছু উদাহরণ দেখি।

অনুমান করুন A নির্ভর করে B এর উপর এবং B নির্ভর করে C এর উপর। এই ক্ষেত্রে C হল A এর একটি ট্রানজিটিভ নির্ভরতা, তাই C এর উৎস পরিবর্তন করা এবং A পুনর্নির্মাণ করা সবকিছু সঠিকভাবে পুনর্নির্মাণ করবে। তবে A C-তে ক্লাস ব্যবহার করতে সক্ষম হবে না। এটির অনুমতি দেওয়ার জন্য, হয় A কে তার deps C ঘোষণা করতে হবে, অথবা B তার (B এর) মধ্যে C ঘোষণা করে A (এবং A এর উপর নির্ভর করতে পারে) এর জন্য এটি সহজ করতে পারে ) exports বৈশিষ্ট্য।

রপ্তানিকৃত লাইব্রেরি বন্ধ করা সমস্ত সরাসরি পিতামাতার নিয়মে উপলব্ধ। একটু ভিন্ন উদাহরণ নিন: A নির্ভর করে B এর উপর, B নির্ভর করে C এবং D এর উপর, এবং এছাড়াও C রপ্তানি করে কিন্তু D নয়। এখন A এর C-তে অ্যাক্সেস আছে কিন্তু D-তে নয়। এখন, যদি C এবং D কিছু লাইব্রেরি রপ্তানি করে, C' এবং D' যথাক্রমে, A শুধুমাত্র C' অ্যাক্সেস করতে পারে কিন্তু D' নয়।

গুরুত্বপূর্ণ: একটি রপ্তানি নিয়ম একটি নিয়মিত নির্ভরতা নয়। পূর্ববর্তী উদাহরণে আটকে থাকা, যদি B C রপ্তানি করে এবং C ব্যবহার করতে চায়, তবে এটিকে তার নিজস্ব deps তালিকাভুক্ত করতে হবে।

javabuilder_jvm_flags

স্ট্রিং তালিকা; ডিফল্ট হল []

সীমাবদ্ধ API, ব্যবহার করবেন না!
javacopts

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরির জন্য অতিরিক্ত কম্পাইলার অপশন। "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপন এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।

এই কম্পাইলার বিকল্পগুলি গ্লোবাল কম্পাইলার বিকল্পগুলির পরে javac-এ পাস করা হয়।

বুলিয়ান; ডিফল্ট False

এই লাইব্রেরিটি শুধুমাত্র সংকলনের জন্য ব্যবহার করা উচিত এবং রানটাইমে নয়। কার্যকরী করার সময় রানটাইম পরিবেশ দ্বারা লাইব্রেরি প্রদান করা হলে দরকারী। এই ধরনের লাইব্রেরির উদাহরণ হল IDE প্ল্যাগ-ইনগুলির জন্য IDE APIs বা একটি আদর্শ JDK-তে চলমান যেকোনো কিছুর জন্য tools.jar

নোট করুন যে neverlink = 1 জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন (যেমন, String বা আদিম প্রকারের static final ধ্রুবক) দ্বারা অনুমোদিত সংকলন লক্ষ্যগুলিতে এই লাইব্রেরি থেকে উপাদান ইনলাইন করতে কম্পাইলারকে বাধা দেয় না। রানটাইম লাইব্রেরি যখন কম্পাইলেশন লাইব্রেরির মতো হয় তখন পছন্দের ব্যবহারের ক্ষেত্রে হয়।

রানটাইম লাইব্রেরি যদি কম্পাইলেশন লাইব্রেরি থেকে আলাদা হয় তাহলে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে এটি শুধুমাত্র সেই জায়গাগুলিতে আলাদা যেখানে JLS কম্পাইলারকে ইনলাইন করতে নিষেধ করে (এবং JLS-এর ভবিষ্যতের সব সংস্করণের জন্য এটি অবশ্যই রাখা উচিত)।

plugins

লেবেলের তালিকা; ডিফল্ট হল []

কম্পাইল-টাইমে চালানোর জন্য জাভা কম্পাইলার প্লাগইন। যখনই এই নিয়মটি তৈরি করা হবে তখন এই বৈশিষ্ট্যে নির্দিষ্ট করা প্রতিটি java_plugin চালানো হবে। একটি লাইব্রেরি exported_plugins ব্যবহার করে এমন নির্ভরতা থেকে প্লাগইনগুলিও উত্তরাধিকার সূত্রে পেতে পারে। প্লাগইন দ্বারা উত্পন্ন সম্পদ এই নিয়মের ফলে জার মধ্যে অন্তর্ভুক্ত করা হবে.
proguard_specs

লেবেলের তালিকা; ডিফল্ট হল []

Proguard স্পেসিফিকেশন হিসাবে ব্যবহার করা ফাইল. এগুলি Proguard দ্বারা ব্যবহৃত স্পেসিফিকেশনের সেট বর্ণনা করবে। নির্দিষ্ট করা থাকলে, এই লাইব্রেরির উপর নির্ভর করে যেকোন android_binary টার্গেটে সেগুলি যোগ করা হবে। এখানে অন্তর্ভুক্ত ফাইলগুলিতে শুধুমাত্র অদম্য বিধি থাকতে হবে, যেমন -dontnote, -dontwarn, assumenosidefects, এবং নিয়ম যা -keep দিয়ে শুরু হয়। অন্যান্য বিকল্পগুলি শুধুমাত্র android_binary এর proguard_specs-এ উপস্থিত হতে পারে, যাতে অ-টাউটোলজিক্যাল মার্জ নিশ্চিত করা যায়।
resource_strip_prefix

স্ট্রিং; ডিফল্ট হল ""

জাভা রিসোর্স থেকে স্ট্রিপ করার জন্য পাথ প্রিফিক্স।

নির্দিষ্ট করা থাকলে, এই পাথ উপসর্গটি resources অ্যাট্রিবিউটের প্রতিটি ফাইল থেকে ছিনিয়ে নেওয়া হয়। এই ডিরেক্টরির অধীনে না থাকা একটি সংস্থান ফাইলের জন্য এটি একটি ত্রুটি। যদি নির্দিষ্ট না করা হয় (ডিফল্ট), রিসোর্স ফাইলের পাথ সোর্স ফাইলের জাভা প্যাকেজের মতো একই যুক্তি অনুসারে নির্ধারিত হয়। উদাহরণস্বরূপ, stuff/java/foo/bar/a.txt এ একটি উৎস ফাইল foo/bar/a.txt এ অবস্থিত হবে।

runtime_deps

লেবেলের তালিকা; ডিফল্ট হল []

শুধুমাত্র রানটাইমে চূড়ান্ত বাইনারি বা পরীক্ষার জন্য উপলব্ধ করা লাইব্রেরি। সাধারণ deps এর মতো, এগুলি রানটাইম ক্লাসপথে প্রদর্শিত হবে, কিন্তু তাদের বিপরীতে, কম্পাইল-টাইম ক্লাসপথে নয়। শুধুমাত্র রানটাইমে প্রয়োজনীয় নির্ভরতা এখানে তালিকাভুক্ত করা উচিত। নির্ভরতা-বিশ্লেষণ সরঞ্জামের লক্ষ্যগুলি উপেক্ষা করা উচিত যা runtime_deps এবং deps উভয় ক্ষেত্রেই প্রদর্শিত হয়।

java_lite_proto_library

দেখুন নিয়ম উৎস
java_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

java_lite_proto_library .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(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 : একটি জাভা সংরক্ষণাগার স্থাপনের জন্য উপযুক্ত। (শুধুমাত্র যদি স্পষ্টভাবে অনুরোধ করা হয় তবেই নির্মিত।) আরও বিশদ বিবরণের জন্য 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

লেবেলের তালিকা; ডিফল্ট হল []

লক্ষ্য তৈরি করতে প্রক্রিয়া করা হয় যে উৎস ফাইলের তালিকা. এই বৈশিষ্ট্য প্রায় সবসময় প্রয়োজন হয়; নীচের ব্যতিক্রম দেখুন।

.java টাইপের সোর্স ফাইল কম্পাইল করা হয়। জেনারেটেড .java ফাইলের ক্ষেত্রে সাধারণত ফাইলের নামের পরিবর্তে এখানে জেনারেট করার নিয়মের নাম রাখার পরামর্শ দেওয়া হয়। এটি শুধুমাত্র পঠনযোগ্যতাকে উন্নত করে না বরং নিয়মটিকে ভবিষ্যতের পরিবর্তনের জন্য আরও স্থিতিস্থাপক করে তোলে: যদি জেনারেট করার নিয়ম ভবিষ্যতে বিভিন্ন ফাইল তৈরি করে, তাহলে আপনাকে শুধুমাত্র একটি জায়গা ঠিক করতে হবে: জেনারেট করার নিয়মের outs । আপনার deps এ জেনারেট করার নিয়ম তালিকাভুক্ত করা উচিত নয় কারণ এটি একটি নো-অপ।

.srcjar ধরনের সোর্স ফাইলগুলি আনপ্যাক করা এবং কম্পাইল করা হয়। (যদি আপনি একটি জেনরুল সহ .java ফাইলগুলির একটি সেট তৈরি করতে চান তবে এটি কার্যকর।)

নিয়ম: যদি নিয়মটি (সাধারণত genrule বা filegroup ) উপরে তালিকাভুক্ত যেকোন ফাইল তৈরি করে, সেগুলি উৎস ফাইলের জন্য বর্ণিত একইভাবে ব্যবহার করা হবে।

এই যুক্তিটি প্রায় সবসময়ই প্রয়োজন হয়, যদি একটি main_class অ্যাট্রিবিউট রানটাইম ক্লাসপথে একটি ক্লাস নির্দিষ্ট করে বা আপনি runtime_deps আর্গুমেন্ট নির্দিষ্ট করেন।

data

লেবেলের তালিকা; ডিফল্ট হল []

রানটাইমে এই লাইব্রেরির প্রয়োজনীয় ফাইলগুলির তালিকা৷ বেশিরভাগ বিল্ড নিয়ম দ্বারা সংজ্ঞায়িত সাধারণ বৈশিষ্ট্যগুলিতে data সম্পর্কে সাধারণ মন্তব্যগুলি দেখুন।
resources

লেবেলের তালিকা; ডিফল্ট হল []

একটি জাভা জারে অন্তর্ভুক্ত করার জন্য ডেটা ফাইলগুলির একটি তালিকা৷

রিসোর্স হতে পারে সোর্স ফাইল বা জেনারেট করা ফাইল।

রিসোর্স নির্দিষ্ট করা থাকলে, কম্পাইলেশনের মাধ্যমে উত্পাদিত সাধারণ .class ফাইলগুলির সাথে সেগুলিকে জারে বান্ডিল করা হবে। জার ফাইলের ভিতরের সংস্থানগুলির অবস্থান প্রকল্পের কাঠামো দ্বারা নির্ধারিত হয়। Bazel প্রথমে Maven এর স্ট্যান্ডার্ড ডিরেক্টরি লেআউটের সন্ধান করে, (একটি "src" ডিরেক্টরির পরে একটি "রিসোর্স" ডিরেক্টরি নাতি)। যদি এটি না পাওয়া যায়, Bazel তারপর "java" বা "javatests" নামের শীর্ষস্থানীয় ডিরেক্টরির সন্ধান করে (উদাহরণস্বরূপ, যদি একটি সংস্থান <workspace root>/x/java/y/java/z এ থাকে , এর পথ রিসোর্সটি y/java/z হবে। এই হিউরিস্টিকটি ওভাররাইড করা যাবে না, তবে, resource_strip_prefix অ্যাট্রিবিউটটি রিসোর্স ফাইলের জন্য একটি নির্দিষ্ট বিকল্প ডিরেক্টরি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে।

add_exports

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরিটিকে প্রদত্ত module বা package অ্যাক্সেস করার অনুমতি দিন।

এটি javac এবং JVM --add-exports= ফ্ল্যাগের সাথে মিলে যায়।

add_opens

স্ট্রিং তালিকা; ডিফল্ট হল []

এই লাইব্রেরিটিকে প্রদত্ত module বা package প্রতিফলিতভাবে অ্যাক্সেস করার অনুমতি দিন।

এটি javac এবং JVM --add-opens= ফ্ল্যাগের সাথে মিলে যায়।

bootclasspath

লেবেল ; ডিফল্ট None

সীমাবদ্ধ API, ব্যবহার করবেন না!
classpath_resources

লেবেলের তালিকা; ডিফল্ট হল []

অন্য কোন উপায় না থাকলে এই বিকল্পটি ব্যবহার করবেন না)

সম্পদের একটি তালিকা যা অবশ্যই জাভা গাছের মূলে অবস্থিত। এই অ্যাট্রিবিউটের একমাত্র উদ্দেশ্য হল তৃতীয় পক্ষের লাইব্রেরিগুলিকে সমর্থন করা যেগুলির জন্য তাদের সংস্থানগুলিকে ক্লাসপথে ঠিক "myconfig.xml" হিসাবে পাওয়া যেতে হবে। এটি শুধুমাত্র বাইনারিগুলিতে অনুমোদিত এবং লাইব্রেরিতে নয়, নামস্থান দ্বন্দ্বের বিপদের কারণে৷

create_executable

বুলিয়ান; ডিফল্ট True

অপ্রচলিত, পরিবর্তে java_single_jar ব্যবহার করুন।
deploy_manifest_lines

স্ট্রিং তালিকা; ডিফল্ট হল []

*_deploy.jar টার্গেটের জন্য তৈরি করা META-INF/manifest.mf ফাইলে যোগ করার জন্য লাইনের একটি তালিকা। এই বৈশিষ্ট্যের বিষয়বস্তু "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপনের বিষয় নয়
javacopts

স্ট্রিং তালিকা; ডিফল্ট হল []

এই বাইনারি জন্য অতিরিক্ত কম্পাইলার বিকল্প. "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপন এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।

এই কম্পাইলার বিকল্পগুলি গ্লোবাল কম্পাইলার বিকল্পগুলির পরে javac-এ পাস করা হয়।

jvm_flags

স্ট্রিং তালিকা; ডিফল্ট হল []

এই বাইনারি চালানোর জন্য তৈরি করা র্যাপার স্ক্রিপ্টে এম্বেড করার জন্য পতাকার একটি তালিকা। $(অবস্থান) এবং "মেক ভেরিয়েবল" প্রতিস্থাপন, এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।

একটি জাভা বাইনারির জন্য র‍্যাপার স্ক্রিপ্টে একটি CLASSPATH সংজ্ঞা রয়েছে (সমস্ত নির্ভরশীল জার খুঁজে বের করার জন্য) এবং সঠিক জাভা দোভাষীকে আহ্বান করে। র‍্যাপার স্ক্রিপ্ট দ্বারা উত্পন্ন কমান্ড লাইনে একটি "$@" দ্বারা অনুসরণ করা প্রধান শ্রেণীর নাম অন্তর্ভুক্ত থাকে যাতে আপনি ক্লাসের নামের পরে অন্যান্য আর্গুমেন্টগুলি পাস করতে পারেন। যাইহোক, JVM দ্বারা পার্স করার উদ্দেশ্যে আর্গুমেন্টগুলি অবশ্যই কমান্ড লাইনে ক্লাসের নামের আগে নির্দিষ্ট করতে হবে। ক্লাসের নাম তালিকাভুক্ত হওয়ার আগে jvm_flags এর বিষয়বস্তু র্যাপার স্ক্রিপ্টে যোগ করা হয়।

মনে রাখবেন যে এই বৈশিষ্ট্যটি *_deploy.jar আউটপুটগুলিতে কোন প্রভাব ফেলে না

launcher

লেবেল ; ডিফল্ট None

একটি বাইনারি নির্দিষ্ট করুন যা JDK এর সাথে অন্তর্ভুক্ত সাধারণ bin/java প্রোগ্রামের পরিবর্তে আপনার জাভা প্রোগ্রাম চালানোর জন্য ব্যবহার করা হবে। লক্ষ্য অবশ্যই একটি cc_binary হতে হবে। যেকোন cc_binary যা Java Invocation API প্রয়োগ করে এই বৈশিষ্ট্যের জন্য একটি মান হিসাবে নির্দিষ্ট করা যেতে পারে।

ডিফল্টরূপে, Bazel সাধারণ JDK লঞ্চার (bin/java বা java.exe) ব্যবহার করবে।

সম্পর্কিত --java_launcher Bazel পতাকা শুধুমাত্র সেই java_binary এবং java_test লক্ষ্যগুলিকে প্রভাবিত করে যেগুলি একটি launcher বৈশিষ্ট্য নির্দিষ্ট করেনি

মনে রাখবেন যে আপনি JDK লঞ্চার বা অন্য লঞ্চার ব্যবহার করছেন কিনা তার উপর নির্ভর করে আপনার নেটিভ (C++, SWIG, JNI) নির্ভরতা ভিন্নভাবে তৈরি হবে:

  • আপনি যদি সাধারণ JDK লঞ্চার (ডিফল্ট) ব্যবহার করেন, তাহলে নেটিভ নির্ভরতাগুলিকে {name}_nativedeps.so নামে একটি শেয়ার্ড লাইব্রেরি হিসেবে তৈরি করা হয়, যেখানে {name} এই java_binary নিয়মের name বৈশিষ্ট্য। এই কনফিগারেশনে লিঙ্কার দ্বারা অব্যবহৃত কোড সরানো হয় না
  • আপনি যদি অন্য কোনো লঞ্চার ব্যবহার করেন, তাহলে নেটিভ (C++) নির্ভরতাগুলি স্ট্যাটিকভাবে {name}_nativedeps নামক একটি বাইনারিতে লিঙ্ক করা হয়, যেখানে {name} এই java_binary নিয়মের name বৈশিষ্ট্য। এই ক্ষেত্রে, লিঙ্কার ফলাফল বাইনারি থেকে অব্যবহৃত বলে মনে করে যেকোন কোড সরিয়ে দেবে, যার মানে শুধুমাত্র JNI-এর মাধ্যমে অ্যাক্সেস করা কোনও C++ কোড লিঙ্ক করা যাবে না যদি না সেই cc_library টার্গেট সর্বদা alwayslink = 1 নির্দিষ্ট করে।

ডিফল্ট JDK লঞ্চার ছাড়া অন্য কোনো লঞ্চার ব্যবহার করার সময়, *_deploy.jar আউটপুটের বিন্যাস পরিবর্তিত হয়। বিস্তারিত জানার জন্য প্রধান java_binary ডক্স দেখুন।

main_class

স্ট্রিং; ডিফল্ট হল ""

এন্ট্রি পয়েন্ট হিসাবে ব্যবহার করার জন্য main() পদ্ধতি সহ ক্লাসের নাম। যদি একটি নিয়ম এই বিকল্পটি ব্যবহার করে, তাহলে এটির জন্য srcs=[...] তালিকার প্রয়োজন নেই। সুতরাং, এই অ্যাট্রিবিউটের সাহায্যে একজন জাভা লাইব্রেরি থেকে একটি এক্সিকিউটেবল তৈরি করতে পারে যাতে ইতিমধ্যে এক বা একাধিক main() পদ্ধতি রয়েছে।

এই বৈশিষ্ট্যের মান একটি শ্রেণীর নাম, একটি উৎস ফাইল নয়। ক্লাসটি রানটাইমে উপলব্ধ হতে হবে: এটি এই নিয়ম দ্বারা সংকলিত হতে পারে ( srcs থেকে) বা সরাসরি বা ট্রানজিটিভ নির্ভরতা ( runtime_deps বা deps মাধ্যমে) দ্বারা সরবরাহ করা যেতে পারে। ক্লাস অনুপলব্ধ হলে, বাইনারি রানটাইমে ব্যর্থ হবে; বিল্ড-টাইম চেক নেই।

বুলিয়ান; ডিফল্ট False

plugins

লেবেলের তালিকা; ডিফল্ট হল []

কম্পাইল-টাইমে চালানোর জন্য জাভা কম্পাইলার প্লাগইন। যখনই এই নিয়মটি তৈরি করা হবে তখন এই বৈশিষ্ট্যে নির্দিষ্ট করা প্রতিটি java_plugin চালানো হবে। একটি লাইব্রেরি exported_plugins ব্যবহার করে এমন নির্ভরতা থেকে প্লাগইনগুলিও উত্তরাধিকার সূত্রে পেতে পারে। প্লাগইন দ্বারা উত্পন্ন সম্পদ এই নিয়মের ফলে জার মধ্যে অন্তর্ভুক্ত করা হবে.
resource_strip_prefix

স্ট্রিং; ডিফল্ট হল ""

জাভা রিসোর্স থেকে স্ট্রিপ করার জন্য পাথ প্রিফিক্স।

নির্দিষ্ট করা থাকলে, এই পাথ উপসর্গটি resources অ্যাট্রিবিউটের প্রতিটি ফাইল থেকে ছিনিয়ে নেওয়া হয়। এই ডিরেক্টরির অধীনে না থাকা একটি সংস্থান ফাইলের জন্য এটি একটি ত্রুটি। যদি নির্দিষ্ট না করা হয় (ডিফল্ট), রিসোর্স ফাইলের পাথ সোর্স ফাইলের জাভা প্যাকেজের মতো একই যুক্তি অনুসারে নির্ধারিত হয়। উদাহরণস্বরূপ, stuff/java/foo/bar/a.txt এ একটি উৎস ফাইল foo/bar/a.txt এ অবস্থিত হবে।

runtime_deps

লেবেলের তালিকা; ডিফল্ট হল []

শুধুমাত্র রানটাইমে চূড়ান্ত বাইনারি বা পরীক্ষার জন্য উপলব্ধ করা লাইব্রেরি। সাধারণ deps এর মতো, এগুলি রানটাইম ক্লাসপথে প্রদর্শিত হবে, কিন্তু তাদের বিপরীতে, কম্পাইল-টাইম ক্লাসপথে নয়। শুধুমাত্র রানটাইমে প্রয়োজনীয় নির্ভরতা এখানে তালিকাভুক্ত করা উচিত। নির্ভরতা-বিশ্লেষণ সরঞ্জামের লক্ষ্যগুলি উপেক্ষা করা উচিত যা runtime_deps এবং deps উভয় ক্ষেত্রেই প্রদর্শিত হয়।
stamp

পূর্ণসংখ্যা; ডিফল্ট হল 0

বাইনারিতে বিল্ড তথ্য এনকোড করা হবে কিনা। সম্ভাব্য মান:
  • stamp = 1 : সর্বদা বিল্ড তথ্যকে বাইনারিতে স্ট্যাম্প করুন, এমনকি --nostamp বিল্ডেও। এই সেটিংটি এড়ানো উচিত , কারণ এটি সম্ভাব্যভাবে বাইনারির জন্য দূরবর্তী ক্যাশিং এবং এটির উপর নির্ভরশীল যেকোনো ডাউনস্ট্রিম অ্যাকশনকে মেরে ফেলে।
  • stamp = 0 : সর্বদা ধ্রুবক মান দ্বারা বিল্ড তথ্য প্রতিস্থাপন করুন। এটি ভাল বিল্ড ফলাফল ক্যাশিং দেয়।
  • stamp = -1 : বিল্ড তথ্যের এম্বেডিং --[no]stamp পতাকা দ্বারা নিয়ন্ত্রিত হয়।

স্ট্যাম্পযুক্ত বাইনারিগুলি পুনর্নির্মাণ করা হয় না যদি না তাদের নির্ভরতা পরিবর্তন হয়।

test_class

স্ট্রিং; ডিফল্ট হ'ল ""

জাভা ক্লাসটি টেস্ট রানার দ্বারা লোড করা হবে।

ডিফল্টরূপে, যদি এই যুক্তিটি সংজ্ঞায়িত না করা হয় তবে উত্তরাধিকার মোডটি ব্যবহৃত হয় এবং পরিবর্তে পরীক্ষার যুক্তিগুলি ব্যবহৃত হয়। প্রথম যুক্তিতে ফ্যালব্যাক না করার জন্য --nolegacy_bazel_java_test পতাকাটি সেট করুন।

এই বৈশিষ্ট্যটি এই পরীক্ষা দ্বারা পরিচালিত জাভা শ্রেণীর নাম নির্দিষ্ট করে। এটি সেট করা বিরল। যদি এই যুক্তিটি বাদ দেওয়া হয় তবে এটি লক্ষ্যটির name এবং এর উত্স-মূল-আপেক্ষিক পথ ব্যবহার করে অনুমান করা হবে। যদি পরীক্ষাটি কোনও পরিচিত উত্সের মূলের বাইরে অবস্থিত থাকে তবে test_class আনসেট থাকলে বাজেল একটি ত্রুটির প্রতিবেদন করবে।

জুনিত 3 এর জন্য, পরীক্ষার শ্রেণিটি হয় junit.framework.TestCase এর একটি সাবক্লাস হতে হবে বা এতে একটি পাবলিক স্ট্যাটিক suite() পদ্ধতি থাকা দরকার যা একটি junit.framework.Test (বা Test একটি সাবক্লাস) ফেরত দেয়। জুনিট 4 এর জন্য, ক্লাসটি org.junit.runner.RunWith দিয়ে টীকা দেওয়া দরকার।

এই বৈশিষ্ট্যটি বেশ কয়েকটি java_test নিয়মকে একই Test ভাগ করে নেওয়ার অনুমতি দেয় ( TestCase , TestSuite , ...)। সাধারণত এটিতে অতিরিক্ত তথ্য দেওয়া হয় (যেমন jvm_flags=['-Dkey=value'] ) এর মাধ্যমে যাতে এর আচরণ প্রতিটি ক্ষেত্রে পৃথক হয়, যেমন পরীক্ষার একটি পৃথক উপসেট চালানো। এই বৈশিষ্ট্যটি javatests গাছের বাইরে জাভা পরীক্ষাগুলির ব্যবহারকেও সক্ষম করে।

use_launcher

বুলিয়ান; ডিফল্ট True

বাইনারি একটি কাস্টম লঞ্চার ব্যবহার করা উচিত কিনা।

যদি এই বৈশিষ্ট্যটি মিথ্যা হিসাবে সেট করা থাকে তবে লঞ্চার বৈশিষ্ট্য এবং সম্পর্কিত --java_launcher পতাকাটি এই লক্ষ্যটির জন্য উপেক্ষা করা হবে।

use_testrunner

বুলিয়ান; ডিফল্ট True

টেস্ট রানার (ডিফল্টরূপে com.google.testing.junit.runner.BazelTestRunner ) শ্রেণি একটি জাভা প্রোগ্রামের প্রধান প্রবেশ পয়েন্ট হিসাবে ব্যবহার করুন এবং bazel.test_suite সিস্টেমের সম্পত্তি হিসাবে টেস্ট রানারকে পরীক্ষার শ্রেণি সরবরাহ করুন।
আপনি এটি ডিফল্ট আচরণকে ওভাররাইড করতে ব্যবহার করতে পারেন, যা java_test বিধিগুলির জন্য টেস্ট রানার ব্যবহার করা এবং এটি java_binary নিয়মের জন্য ব্যবহার না করা। আপনি এটি করতে চাইবেন এমন সম্ভাবনা নেই। একটি ব্যবহার হ'ল AllTest নিয়মের জন্য যা অন্য নিয়ম দ্বারা আহ্বান করা হয় (উদাহরণস্বরূপ পরীক্ষা চালানোর আগে একটি ডাটাবেস সেট আপ করা)। AllTest নিয়মটি অবশ্যই java_binary হিসাবে ঘোষণা করা উচিত, তবে এখনও পরীক্ষার রানারকে তার প্রধান প্রবেশ পয়েন্ট হিসাবে ব্যবহার করা উচিত। একটি টেস্ট রানার ক্লাসের নামটি main_class অ্যাট্রিবিউট দিয়ে ওভাররাইড করা যেতে পারে।

java_package_configration

নিয়ম উত্স দেখুন
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(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_library বা java_binary নিয়ম plugins বৈশিষ্ট্যের মাধ্যমে তাদের উপর নির্ভর করে প্লাগইনগুলি চালাতে পারে। একটি java_library স্বয়ংক্রিয়ভাবে লাইব্রেরিতে প্লাগইনগুলি রফতানি করতে পারে যা সরাসরি exported_plugins ব্যবহার করে এটির উপর নির্ভর করে।

অন্তর্নিহিত আউটপুট লক্ষ্য

  • libname .jar : একটি জাভা সংরক্ষণাগার।

processor_class আর্গুমেন্ট যুক্ত করা ব্যতীত যুক্তিগুলি java_library মতো।

যুক্তি

গুণাবলী
name

নাম ; প্রয়োজনীয়

এই লক্ষ্যটির জন্য একটি অনন্য নাম।

deps

লেবেলের তালিকা; ডিফল্ট হ'ল []

এই লাইব্রেরিতে লিঙ্ক করতে লাইব্রেরির তালিকা। বেশিরভাগ বিল্ড বিধি দ্বারা সংজ্ঞায়িত সাধারণ বৈশিষ্ট্যগুলিতে deps সম্পর্কে সাধারণ মন্তব্যগুলি দেখুন।

java_library বিধি দ্বারা নির্মিত জারগুলি deps তালিকাভুক্ত করা এই নিয়মের সংকলন-সময় ক্লাসপথের উপর থাকবে। তদ্ব্যতীত তাদের deps , runtime_deps এবং exports ট্রানজিটিভ ক্লোজারটি রানটাইম ক্লাসপথে থাকবে।

বিপরীতে, data অ্যাট্রিবিউটের লক্ষ্যগুলি রানফাইলে অন্তর্ভুক্ত করা হয় তবে সংকলন-সময় বা রানটাইম ক্লাসপথ না করে।

srcs

লেবেলের তালিকা; ডিফল্ট হ'ল []

লক্ষ্য তৈরি করতে প্রক্রিয়াজাত করা উত্স ফাইলগুলির তালিকা। এই বৈশিষ্ট্যটি প্রায় সর্বদা প্রয়োজন; নীচে ব্যতিক্রম দেখুন।

প্রকারের উত্স ফাইলগুলি .java সংকলিত হয়। উত্পন্ন .java ফাইলগুলির ক্ষেত্রে এটি সাধারণত ফাইলের নামের পরিবর্তে উত্পাদনের নিয়মের নামটি এখানে রাখার পরামর্শ দেওয়া হয়। এটি কেবল পঠনযোগ্যতার উন্নতি করে না তবে নিয়মটিকে ভবিষ্যতের পরিবর্তনের জন্য আরও স্থিতিস্থাপক করে তোলে: যদি উত্পাদনের নিয়ম ভবিষ্যতে বিভিন্ন ফাইল উত্পন্ন করে তবে আপনাকে কেবল একটি জায়গা ঠিক করতে হবে: উত্পাদনের নিয়মের outs । আপনার deps উত্পাদনের নিয়মটি তালিকাভুক্ত করা উচিত নয় কারণ এটি কোনও নো-অপ।

প্রকারের উত্স ফাইলগুলি .srcjar আনপ্যাকড এবং সংকলিত। (এটি দরকারী যদি আপনার জেনারুল সহ .java ফাইলগুলির একটি সেট তৈরি করতে হয়))

বিধি: যদি নিয়ম (সাধারণত genrule বা filegroup ) উপরে তালিকাভুক্ত ফাইলগুলির যে কোনওটি উত্পন্ন করে তবে সেগুলি উত্স ফাইলগুলির জন্য বর্ণিত হিসাবে একইভাবে ব্যবহৃত হবে।

প্রকারের উত্স ফাইলগুলি .properties সংস্থান হিসাবে বিবেচিত হয়।

অন্যান্য সমস্ত ফাইল উপেক্ষা করা হয়, যতক্ষণ না উপরে বর্ণিত কোনও ফাইল ধরণের কমপক্ষে একটি ফাইল থাকে। অন্যথায় একটি ত্রুটি উত্থাপিত হয়।

আপনি যদি runtime_deps যুক্তিটি নির্দিষ্ট করে থাকেন তবে এই যুক্তিটি প্রায় সর্বদা প্রয়োজন।

data

লেবেলের তালিকা; ডিফল্ট হ'ল []

রানটাইমে এই লাইব্রেরি দ্বারা প্রয়োজনীয় ফাইলগুলির তালিকা। বেশিরভাগ বিল্ড বিধি দ্বারা সংজ্ঞায়িত সাধারণ বৈশিষ্ট্যগুলিতে data সম্পর্কে সাধারণ মন্তব্যগুলি দেখুন।

java_library তৈরি করার সময়, বাজেল এই ফাইলগুলি কোথাও রাখে না; যদি data ফাইলগুলি ফাইল তৈরি করা হয় তবে বাজেল সেগুলি উত্পন্ন করে। যখন এই java_library বাজেল অনুলিপি করে বা data ফাইলগুলিকে রানফাইলস এরিয়াতে লিঙ্ক করে এমন একটি পরীক্ষা তৈরি করার সময়।

resources

লেবেলের তালিকা; ডিফল্ট হ'ল []

জাভা জারে অন্তর্ভুক্ত করার জন্য ডেটা ফাইলগুলির একটি তালিকা।

সংস্থানগুলি উত্স ফাইল বা উত্পন্ন ফাইল হতে পারে।

যদি সংস্থানগুলি নির্দিষ্ট করা থাকে তবে সেগুলি সংকলন দ্বারা উত্পাদিত সাধারণ .class ফাইলগুলির সাথে জারে বান্ডিল করা হবে। জার ফাইলের অভ্যন্তরের সংস্থানগুলির অবস্থান প্রকল্পের কাঠামো দ্বারা নির্ধারিত হয়। বাজেল প্রথমে ম্যাভেনের স্ট্যান্ডার্ড ডিরেক্টরি লেআউটটি সন্ধান করে (একটি "এসআরসি" ডিরেক্টরি তারপরে একটি "রিসোর্স" ডিরেক্টরি নাতনি)। যদি এটি না পাওয়া যায় তবে বাজেল তারপরে "জাভা" বা "জাভেটেস্টস" নামের শীর্ষতম ডিরেক্টরিটির সন্ধান করুন (সুতরাং, উদাহরণস্বরূপ, যদি কোনও সংস্থান <workspace root>/x/java/y/java/z থাকে তবে, এর পথ রিসোর্সটি y/java/z হবে resource_strip_prefix

add_exports

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

এই লাইব্রেরিটি প্রদত্ত module বা package অ্যাক্সেস করার অনুমতি দিন।

এটি জাভাক এবং জেভিএম-এডিডি-রফতানি = পতাকাগুলির সাথে সম্পর্কিত।

add_opens

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

এই লাইব্রেরিটি প্রদত্ত module বা package প্রতিফলিতভাবে অ্যাক্সেস করার অনুমতি দিন।

এটি জাভাক এবং জেভিএম-এডিডি-ওপেনস = পতাকাগুলির সাথে সম্পর্কিত।

bootclasspath

লেবেল ; ডিফল্ট None

সীমাবদ্ধ এপিআই, ব্যবহার করবেন না!
generates_api

বুলিয়ান; ডিফল্ট False

এই বৈশিষ্ট্যটি এপিআই কোড তৈরি করে এমন টীকাগুলি প্রসেসর চিহ্নিত করে।

যদি কোনও নিয়ম কোনও এপিআই-উত্পাদক টীকা প্রসেসর ব্যবহার করে, তবে এর উপর নির্ভর করে অন্যান্য নিয়মগুলি উত্পন্ন কোডটি উল্লেখ করতে পারে কেবল তখনই তাদের সংকলন ক্রিয়াগুলি উত্পন্ন বিধি অনুসারে নির্ধারিত হয়। এই বৈশিষ্ট্যটি বাজেলকে সময়সূচী সীমাবদ্ধতাগুলি প্রবর্তন করার নির্দেশ দেয় যখন -জাভা_হেডার_কম্পিলেশন সক্ষম করা থাকে।

সতর্কতা: এই বৈশিষ্ট্যটি বিল্ড পারফরম্যান্সকে প্রভাবিত করে, প্রয়োজনে কেবল এটি ব্যবহার করুন।

javabuilder_jvm_flags

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

সীমাবদ্ধ এপিআই, ব্যবহার করবেন না!
javacopts

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

এই লাইব্রেরির জন্য অতিরিক্ত সংকলক বিকল্প। "পরিবর্তনশীল করুন" প্রতিস্থাপন এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।

এই সংকলক বিকল্পগুলি বিশ্বব্যাপী সংকলক বিকল্পগুলির পরে জাভাকের কাছে প্রেরণ করা হয়।

বুলিয়ান; ডিফল্ট False

এই লাইব্রেরিটি কেবল সংকলনের জন্য ব্যবহার করা উচিত কিনা এবং রানটাইমে নয়। কার্যকরী চলাকালীন লাইব্রেরিটি রানটাইম পরিবেশ দ্বারা সরবরাহ করা হবে। এই জাতীয় গ্রন্থাগারগুলির উদাহরণগুলি হ'ল আইডিই প্লাগ-ইনস বা tools.jar জন্য আইডিই এপিআই। স্ট্যান্ডার্ড জেডিকে চলমান যে কোনও কিছুর জন্য জার।

নোট করুন যে neverlink = 1 এই লাইব্রেরি থেকে সংকলন থেকে সংকলককে সংকলন লক্ষ্যগুলিতে বাধা দেয় না যা জাভা ভাষার স্পেসিফিকেশন (যেমন, String static final ধ্রুবক বা আদিম ধরণের) দ্বারা অনুমোদিত। পছন্দসই ব্যবহারের কেসটি তাই যখন রানটাইম লাইব্রেরি সংকলন লাইব্রেরির সাথে সমান হয়।

যদি রানটাইম লাইব্রেরিটি সংকলন গ্রন্থাগার থেকে পৃথক হয় তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে এটি কেবলমাত্র সেই জায়গাগুলিতে পৃথক হয় যা জেএলএস সংকলকগুলিকে ইনলাইন করতে নিষেধ করে (এবং এটি অবশ্যই জেএলএসের সমস্ত ভবিষ্যতের সংস্করণ ধরে রাখতে হবে)।

output_licenses

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

plugins

লেবেলের তালিকা; ডিফল্ট হ'ল []

জাভা সংকলক প্লাগইনগুলি সংকলন-সময়ে চালাতে। এই বৈশিষ্ট্যটিতে উল্লিখিত প্রতিটি java_plugin যখনই এই নিয়মটি তৈরি করা হয়। একটি লাইব্রেরি নির্ভরতা থেকে প্লাগইনগুলির উত্তরাধিকারী হতে পারে যা exported_plugins ব্যবহার করে। প্লাগইন দ্বারা উত্পাদিত সংস্থানগুলি এই নিয়মের ফলাফলের জারে অন্তর্ভুক্ত করা হবে।
processor_class

স্ট্রিং; ডিফল্ট হ'ল ""

প্রসেসর শ্রেণি হ'ল জাভা সংকলকটি টীকা প্রসেসরের প্রবেশের পয়েন্ট হিসাবে ব্যবহার করা উচিত এমন ক্লাসের সম্পূর্ণ যোগ্য ধরণের। যদি নির্দিষ্ট না করা হয় তবে এই নিয়মটি জাভা সংকলকের টীকা প্রক্রিয়াকরণে একটি টীকা প্রসেসরের অবদান রাখবে না, তবে এর রানটাইম ক্লাসপথটি এখনও সংকলকের টীকা প্রসেসরের পথে অন্তর্ভুক্ত করা হবে। (এটি প্রাথমিকভাবে ত্রুটি প্রবণ প্লাগইনগুলির দ্বারা ব্যবহারের উদ্দেশ্যে তৈরি করা হয়েছে, যা জাভা.উটিল.সার্ভিসোলোডার ব্যবহার করে টীকাগুলি প্রসেসরের পথ থেকে লোড করা হয়))
proguard_specs

লেবেলের তালিকা; ডিফল্ট হ'ল []

ফাইলগুলি প্রোগুয়ার্ড স্পেসিফিকেশন হিসাবে ব্যবহৃত হবে। এগুলি প্রোগুয়ার্ড দ্বারা ব্যবহৃত স্পেসিফিকেশনগুলির সেটটি বর্ণনা করবে। যদি নির্দিষ্ট করা হয় তবে এগুলি এই লাইব্রেরির উপর নির্ভর করে যে কোনও android_binary লক্ষ্যে যুক্ত করা হবে। এখানে অন্তর্ভুক্ত ফাইলগুলিতে কেবলমাত্র আইডেমপোটেন্ট বিধি থাকতে হবে, যথা -ডন্টনোট, -ডন্টওয়ার্ন, অ্যাসোসাইডেফেক্টস এবং বিধিগুলি যা -কেইপি দিয়ে শুরু হয়। অন্যান্য বিকল্পগুলি অ-টুটোলজিকাল মার্জগুলি নিশ্চিত করতে কেবলমাত্র android_binary এর প্রোগুয়ার্ড_স্পেকগুলিতে উপস্থিত হতে পারে।
resource_strip_prefix

স্ট্রিং; ডিফল্ট হ'ল ""

জাভা রিসোর্সগুলি থেকে স্ট্রিপ করার জন্য পথটি উপসর্গ।

যদি নির্দিষ্ট করা হয় তবে এই পাথ উপসর্গটি প্রতিটি ফাইল থেকে resources অ্যাট্রিবিউটে ছিনিয়ে নেওয়া হয়। এই ডিরেক্টরিটির অধীনে না থাকা কোনও রিসোর্স ফাইলের পক্ষে এটি একটি ত্রুটি। যদি নির্দিষ্ট না করা হয় (ডিফল্ট), উত্স ফাইলগুলির জাভা প্যাকেজ হিসাবে একই যুক্তি অনুসারে রিসোর্স ফাইলের পথ নির্ধারণ করা হয়। উদাহরণস্বরূপ, stuff/java/foo/bar/a.txt -তে একটি উত্স ফাইল foo/bar/a.txt এ অবস্থিত হবে।

java_runtime

নিয়ম উত্স দেখুন
java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)

জাভা রানটাইমের জন্য কনফিগারেশন নির্দিষ্ট করে।

উদাহরণ:



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


যুক্তি

গুণাবলী
name

নাম ; প্রয়োজনীয়

এই লক্ষ্যটির জন্য একটি অনন্য নাম।

srcs

লেবেলের তালিকা; ডিফল্ট হ'ল []

রানটাইমে সমস্ত ফাইল।
default_cds

লেবেল ; ডিফল্ট None

হারমেটিক java_runtime জন্য ডিফল্ট সিডিএস সংরক্ষণাগার। যখন java_binary টার্গেটের জন্য হারমেটিক সক্ষম করা হয় এবং যদি লক্ষ্যটি classlist বৈশিষ্ট্য নির্দিষ্ট করে নিজস্ব সিডিএস সংরক্ষণাগার সরবরাহ না করে, java_runtime ডিফল্ট সিডিএস হারমেটিক ডিপ্লাই জারে প্যাকেজ করা হয়।
hermetic_srcs

লেবেলের তালিকা; ডিফল্ট হ'ল []

রানটাইমের ফাইলগুলি হারমেটিক মোতায়েনের জন্য প্রয়োজনীয়।
hermetic_static_libs

লেবেলের তালিকা; ডিফল্ট হ'ল []

হেরমেটিক মোতায়েনের জন্য লঞ্চারের সাথে স্থিতিশীলভাবে যুক্ত গ্রন্থাগারগুলি
java

লেবেল ; ডিফল্ট None

জাভা এক্সিকিউটেবলের পথ।
java_home

স্ট্রিং; ডিফল্ট হ'ল ""

রানটাইমের মূলের পথ। পরিবর্তনশীল প্রতিস্থাপন "তৈরি" সাপেক্ষে। যদি এই পথটি নিখুঁত হয় তবে নিয়মটি একটি সুপরিচিত পথ সহ একটি অ-হারমেটিক জাভা রানটাইমকে বোঝায়। সেক্ষেত্রে srcs এবং java বৈশিষ্ট্যগুলি অবশ্যই খালি থাকতে হবে।
lib_ct_sym

লেবেল ; ডিফল্ট None

--release সাথে সংকলনের জন্য প্রয়োজনীয় LIB/CT.SYM ফাইল। যদি নির্দিষ্ট না করা হয় এবং srcs ঠিক একটি ফাইল রয়েছে যার পথটি /lib/ct.sym দিয়ে শেষ হয়, সেই ফাইলটি ব্যবহৃত হয়।
lib_modules

লেবেল ; ডিফল্ট None

হারমেটিক মোতায়েনের জন্য প্রয়োজনীয় LIB/মডিউল ফাইল।
output_licenses

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

version

পূর্ণসংখ্যা; ডিফল্ট 0 হয়

জাভা রানটাইমের বৈশিষ্ট্য সংস্করণ। অর্থাত্, পূর্ণসংখ্যা Runtime.version().feature()

জাভা_টুলচেইন

নিয়ম উত্স দেখুন
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(
    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

লেবেল ; ডিফল্ট None

অ্যান্ড্রয়েড লিন্ট রানার লেবেল, যদি থাকে।
bootclasspath

লেবেলের তালিকা; ডিফল্ট হ'ল []

জাভা টার্গেট বুটক্লাসপথ এন্ট্রি। জাভাকের -বুটক্লাসপাথ পতাকার সাথে সম্পর্কিত।
compatible_javacopts

খালি; ডিফল্ট হ'ল {}

অভ্যন্তরীণ এপিআই, ব্যবহার করবেন না!
deps_checker

লেবেল ; ডিফল্ট None

আমদানি ডিপস্কেকার ডিপ্লাই জার লেবেল।
forcibly_disable_header_compilation

বুলিয়ান; ডিফল্ট False

ওভাররাইডস -জাভা_হেডার_কম্পিলেশন প্ল্যাটফর্মগুলিতে শিরোনাম সংকলন অক্ষম করতে এটি সমর্থন করে না, যেমন জেডিকে 7 বাজেল।
genclass

লেবেল ; ডিফল্ট None

জেনক্লাস ডিপ্লাই জারের লেবেল।
header_compiler

লেবেল ; ডিফল্ট None

শিরোনাম সংকলক লেবেল। প্রয়োজনীয় যদি -জাভা_হেডার_কম্পিলেশন সক্ষম করা থাকে।
header_compiler_builtin_processors

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

অভ্যন্তরীণ এপিআই, ব্যবহার করবেন না!
header_compiler_direct

লেবেল ; ডিফল্ট None

সরাসরি ক্লাসপথ ক্রিয়াকলাপগুলির জন্য ব্যবহার করতে শিরোনাম সংকলকটির al চ্ছিক লেবেল যা কোনও এপিআই-উত্পাদনের টীকা প্রসেসর অন্তর্ভুক্ত করে না।

এই সরঞ্জামটি টীকা প্রক্রিয়াকরণকে সমর্থন করে না।

ijar

লেবেল ; ডিফল্ট None

আইজার এক্সিকিউটেবলের লেবেল।
jacocorunner

লেবেল ; ডিফল্ট None

জ্যাকোকোভারেজরুনার ডিপ্লাই জার লেবেল।
java_runtime

লেবেল ; ডিফল্ট None

এই টুলচেইনের সাথে ব্যবহার করতে জাভা_রুনটাইম। এটি এক্সিকিউশন কনফিগারেশনে java_runtime এ ডিফল্ট হয়।
javabuilder

লেবেল ; ডিফল্ট None

জাভাবিল্ডার মোতায়েন জারের লেবেল।
javabuilder_data

লেবেলের তালিকা; ডিফল্ট হ'ল []

Javabuilder_jvm_opts এ লেবেল-এক্সপেনশনের জন্য উপাত্তের লেবেল উপলব্ধ।
javabuilder_jvm_opts

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

জাভাবিল্ডারকে অনুরোধ করার সময় জেভিএমের পক্ষে যুক্তিগুলির তালিকা।
javac_supports_multiplex_workers

বুলিয়ান; ডিফল্ট True

সত্য যদি জাভাবুইল্ডার একটি মাল্টিপ্লেক্স অবিচ্ছিন্ন কর্মী হিসাবে চলমান সমর্থন করে তবে তা যদি তা না করে তবে তা মিথ্যা।
javac_supports_worker_cancellation

বুলিয়ান; ডিফল্ট True

সত্য যদি জাভাবুইল্ডার অবিচ্ছিন্ন কর্মীদের বাতিলকরণকে সমর্থন করে তবে তা যদি তা না করে তবে তা মিথ্যা।
javac_supports_worker_multiplex_sandboxing

বুলিয়ান; ডিফল্ট False

সত্য যদি জাভাবুইল্ডার স্যান্ডবক্সিং সহ মাল্টিপ্লেক্স অবিচ্ছিন্ন কর্মী হিসাবে দৌড়াতে সমর্থন করে তবে তা যদি তা না করে তবে তা মিথ্যা।
javac_supports_workers

বুলিয়ান; ডিফল্ট True

সত্য যদি জাভাবিল্ডার অবিচ্ছিন্ন কর্মী হিসাবে দৌড়াদৌড়ি সমর্থন করে তবে তা যদি তা না করে তবে তা মিথ্যা।
javacopts

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

জাভা সংকলকের জন্য অতিরিক্ত যুক্তিগুলির তালিকা। সম্ভাব্য জাভা সংকলক পতাকাগুলির বিস্তৃত তালিকার জন্য দয়া করে জাভা সংকলক ডকুমেন্টেশন দেখুন।
jspecify_implicit_deps

লেবেল ; ডিফল্ট None

পরীক্ষামূলক, ব্যবহার করবেন না!
jspecify_javacopts

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

পরীক্ষামূলক, ব্যবহার করবেন না!
jspecify_packages

লেবেলের তালিকা; ডিফল্ট হ'ল []

পরীক্ষামূলক, ব্যবহার করবেন না!
jspecify_processor

লেবেল ; ডিফল্ট None

পরীক্ষামূলক, ব্যবহার করবেন না!
jspecify_processor_class

স্ট্রিং; ডিফল্ট হ'ল ""

পরীক্ষামূলক, ব্যবহার করবেন না!
jspecify_stubs

লেবেলের তালিকা; ডিফল্ট হ'ল []

পরীক্ষামূলক, ব্যবহার করবেন না!
jvm_opts

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

জাভা সংকলককে অনুরোধ করার সময় জেভিএমের পক্ষে যুক্তিগুলির তালিকা। এই বিকল্পের জন্য সম্ভাব্য পতাকাগুলির বিস্তৃত তালিকার জন্য দয়া করে জাভা ভার্চুয়াল মেশিন ডকুমেন্টেশন দেখুন।
misc

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

অবমূল্যায়ন: পরিবর্তে জাভাকপস ব্যবহার করুন
oneversion

লেবেল ; ডিফল্ট None

এক-সংস্করণ প্রয়োগকারী বাইনারি লেবেল।
oneversion_allowlist_for_tests

লেবেল ; ডিফল্ট None

পরীক্ষাগুলির জন্য ওয়ান-সংস্করণ অনুমতিপত্রের লেবেল।
oneversion_whitelist

লেবেল ; ডিফল্ট None

ওয়ান-ভার্সন মঞ্জুরলিস্টের লেবেল।
package_configuration

লেবেলের তালিকা; ডিফল্ট হ'ল []

কনফিগারেশন যা নির্দিষ্ট প্যাকেজ গ্রুপগুলিতে প্রয়োগ করা উচিত।
proguard_allowlister

লেবেল ; ডিফল্ট হ'ল "@bazel_tools//tools/jdk:proguard_whitelister"

প্রোগুয়ার্ড অনুমতি দেয়ার লেবেল।
reduced_classpath_incompatible_processors

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

অভ্যন্তরীণ এপিআই, ব্যবহার করবেন না!
singlejar

লেবেল ; ডিফল্ট None

সিঙ্গলজার ডিপ্লাই জারের লেবেল।
source_version

স্ট্রিং; ডিফল্ট হ'ল ""

জাভা উত্স সংস্করণ (যেমন, '6' বা '7')। এটি জাভা উত্স কোডে কোড স্ট্রাকচারের কোন সেট অনুমোদিত তা নির্দিষ্ট করে।
target_version

স্ট্রিং; ডিফল্ট হ'ল ""

জাভা টার্গেট সংস্করণ (যেমন, '6' বা '7')। এটি নির্দিষ্ট করে যে কোন জাভা রানটাইম ক্লাসটি তৈরি করা উচিত।
timezone_data

লেবেল ; ডিফল্ট None

টাইমজোন ডেটাযুক্ত একটি রিসোর্স জারের লেবেল। যদি সেট করা হয় তবে টাইমজোন ডেটা সমস্ত জাভা_বাইনারি বিধিগুলির সুস্পষ্টভাবে রানটাইম নির্ভরতা হিসাবে যুক্ত করা হয়।
tools

লেবেলের তালিকা; ডিফল্ট হ'ল []

JVM_OPTS এ লেবেল-এক্সপেনশনের জন্য উপলব্ধ সরঞ্জামগুলির লেবেল।
turbine_data

লেবেলের তালিকা; ডিফল্ট হ'ল []

টারবাইন_জেভিএম_ওপ্টসে লেবেল-এক্সপেনশনের জন্য উপাত্তের লেবেলগুলি উপলব্ধ।
turbine_jvm_opts

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

টারবাইন প্রার্থনা করার সময় জেভিএমের পক্ষে যুক্তিগুলির তালিকা।
xlint

স্ট্রিংগুলির তালিকা; ডিফল্ট হ'ল []

ডিফল্ট তালিকা থেকে যুক্ত বা অপসারণের জন্য সতর্কতার তালিকা। এটি অপসারণের জন্য এটি একটি ড্যাশ দিয়ে আগে। আরও তথ্যের জন্য দয়া করে জাভাক ডকুমেন্টেশন -এক্স্লিন্ট বিকল্পগুলিতে দেখুন।