กฎ
- java_binary
- java_import
- java_library
- java_lite_proto_library
- java_proto_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
ดูแหล่งที่มาของกฎjava_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
สร้างไฟล์เก็บถาวร Java ("ไฟล์ jar") รวมถึงสคริปต์เชลล์ที่ใช้ห่อหุ้มซึ่งมีชื่อเดียวกับกฎ
สคริปต์เชลล์ของ Wrapper ใช้ classpath ที่มีไฟล์ jar สำหรับแต่ละไลบรารีที่ไบนารีนั้นใช้อยู่ เมื่อเรียกใช้สคริปต์ Wrapper ของ Wrapper ตัวแปรสภาพแวดล้อม JAVABIN
ที่ไม่ว่างเปล่าจะมีความสำคัญเหนือกว่าเวอร์ชันที่ระบุผ่านแฟล็ก --java_runtime_version
ของ Bazel
สคริปต์ Wrapper ยอมรับ Flag ที่ไม่ซ้ำกันหลายรายการ ดูรายการ Flag และตัวแปรสภาพแวดล้อมที่กำหนดค่าได้ซึ่ง Wrapper ยอมรับได้ที่
//src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
เป้าหมายเอาต์พุตโดยนัย
name.jar
: ไฟล์เก็บถาวร Java ที่มีไฟล์คลาสและทรัพยากรอื่นๆ ที่สอดคล้องกับทรัพยากรที่ต้องพึ่งพาโดยตรงของไบนารีname-src.jar
: ที่เก็บถาวรที่มีแหล่งที่มา ("jar แหล่งที่มา")name_deploy.jar
: ที่เก็บถาวรของ Java ที่เหมาะสำหรับการทำให้ใช้งานได้ (สร้างขึ้นเมื่อมีการร้องขออย่างชัดเจนเท่านั้น)การสร้างเป้าหมาย
<name>_deploy.jar
สําหรับกฎจะสร้างไฟล์ jar แบบสําเร็จรูปที่มีไฟล์ Manifest ซึ่งช่วยให้สามารถเรียกใช้ได้โดยใช้คําสั่งjava -jar
หรือตัวเลือก--singlejar
ของสคริปต์ Wrapper เราขอแนะนำให้ใช้สคริปต์ Wrapper แทนjava -jar
เนื่องจากจะส่งFlag JVM และตัวเลือกในการโหลดไลบรารีแบบเนทีฟด้วยJAR ที่ใช้ติดตั้งประกอบด้วยคลาสทั้งหมดที่ Class Loader จะพบซึ่งค้นหา Classpath จากสคริปต์ Wrapper ของไบนารีตั้งแต่ต้นจนจบ รวมถึงมีไลบรารีเนทีฟที่จําเป็นสําหรับทรัพยากร Dependency ด้วย ระบบจะโหลดไฟล์เหล่านี้ลงใน JVM โดยอัตโนมัติเมื่อรันไทม์
หากเป้าหมายระบุแอตทริบิวต์ launcher ไฟล์ _deploy.jar จะเป็นไบนารีแบบเนทีฟแทนที่จะเป็นไฟล์ JAR ปกติ ซึ่งจะมีตัวเปิดใช้งานและไลบรารี (C++) ของกฎของคุณที่ลิงก์เป็นไบนารีแบบคงที่ ไบต์ของไฟล์ jar จริงจะต่อท้ายไบนารีดั้งเดิมนั้น ทำให้สร้างไบนารี BLOB เดี่ยวที่มีทั้งไฟล์ปฏิบัติการและโค้ด Java คุณสามารถเรียกใช้ไฟล์ 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", ], )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ คุณควรใช้ชื่อของไฟล์ต้นฉบับที่เป็นจุดแรกเข้าหลักของแอปพลิเคชัน (ลบนามสกุล) ตัวอย่างเช่น หากชื่อของจุดแรกเข้าคือ Main.java ชื่อของคุณอาจเป็น Main
|
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ได้ที่แอตทริบิวต์ทั่วไปที่กำหนดโดยกฎบิลด์ส่วนใหญ่
|
srcs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
คอมไพล์ไฟล์ต้นทางประเภท
ระบบจะแตกไฟล์ต้นฉบับประเภท
กฎ: หากกฎ (โดยทั่วไปคือ
เกือบทุกครั้งจะต้องมีอาร์กิวเมนต์นี้ ยกเว้นในกรณีที่แอตทริบิวต์ |
resources
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
หากระบุทรัพยากร ระบบจะรวมทรัพยากรไว้ในไฟล์ jar พร้อมกับไฟล์ ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
classpath_resources
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
รายการทรัพยากรที่ต้องอยู่ที่รูทของต้นไม้ Java วัตถุประสงค์เดียวของแอตทริบิวต์นี้คือเพื่อรองรับไลบรารีของบุคคลที่สามที่กำหนดให้ต้องพบทรัพยากรในคลาสพาธเป็น |
create_executable
|
บูลีน ไม่สามารถกําหนดค่าได้ ค่าเริ่มต้นคือ java_single_jar แทน
|
deploy_env
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ java_binary อื่นๆ ที่แสดงถึงสภาพแวดล้อมการทําให้ใช้งานได้สําหรับไบนารีนี้
ตั้งค่าแอตทริบิวต์นี้เมื่อสร้างปลั๊กอินที่จะโหลดโดย java_binary อื่นการตั้งค่าแอตทริบิวต์นี้จะยกเว้นการพึ่งพาทั้งหมดจาก classpath รันไทม์ (และไฟล์ jar ที่ใช้ติดตั้ง) ของไบนารีนี้ซึ่งแชร์กันระหว่างไบนารีนี้กับเป้าหมายที่ระบุไว้ใน deploy_env
|
deploy_manifest_lines
|
รายการสตริง ค่าเริ่มต้นคือ META-INF/manifest.mf ที่สร้างขึ้นสำหรับเป้าหมาย *_deploy.jar เนื้อหาของแอตทริบิวต์นี้ไม่อยู่ภายใต้การแทนที่"สร้างตัวแปร"
|
javacopts
|
รายการสตริง ค่าเริ่มต้นคือ ตัวเลือกคอมไพเลอร์เหล่านี้จะส่งไปยัง javac หลังตัวเลือกคอมไพเลอร์ส่วนกลาง |
jvm_flags
|
รายการสตริง ค่าเริ่มต้นคือ สคริปต์ Wrapper สำหรับไบนารีของ Java จะรวมคำจำกัดความ CLASSPATH (เพื่อค้นหา Jar ที่อ้างอิงทั้งหมด) และเรียกใช้อินเทอร์พรีเตอร์ของ Java ที่ถูกต้อง
บรรทัดคำสั่งที่สร้างขึ้นโดยสคริปต์ Wrapper จะมีชื่อของคลาสหลักตามด้วย โปรดทราบว่าแอตทริบิวต์นี้ไม่มีผลต่อเอาต์พุต |
launcher
|
ป้ายกํากับ ค่าเริ่มต้นคือ bin/java ปกติที่รวมอยู่ใน JDK
เป้าหมายต้องเป็น cc_binary คุณสามารถระบุ cc_binary ใดก็ได้ที่ใช้
Invocation API ของ Java เป็นค่าสำหรับแอตทริบิวต์นี้
โดยค่าเริ่มต้น Bazel จะใช้ตัวเปิด JDK ปกติ (bin/java หรือ java.exe) แฟล็ก โปรดทราบว่าระบบจะสร้างการพึ่งพาแบบเนทีฟ (C++, SWIG, JNI) แตกต่างกันไป ขึ้นอยู่กับว่าคุณใช้ Launcher ของ JDK หรือ Launcher อื่น
เมื่อใช้ Launcher อื่นที่ไม่ใช่ Launcher ของ JDK ตามค่าเริ่มต้น รูปแบบของเอาต์พุต |
main_class
|
สตริง ค่าเริ่มต้นคือ main() เพื่อใช้เป็นจุดแรกเข้า
หากกฎใช้ตัวเลือกนี้ ก็ไม่จำเป็นต้องมีรายการ srcs=[...]
ดังนั้น คุณจึงสร้างไฟล์ปฏิบัติการจากไลบรารี Java ที่มีเมธอด main() อย่างน้อย 1 รายการอยู่แล้วได้โดยใช้แอตทริบิวต์นี้
ค่าของแอตทริบิวต์นี้เป็นชื่อคลาส ไม่ใช่ไฟล์ต้นฉบับ คลาสต้องพร้อมใช้งานที่รันไทม์ โดยอาจคอมไพล์โดยกฎนี้ (จาก |
plugins
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ java_plugin ทั้งหมดที่ระบุในแอตทริบิวต์นี้ทุกครั้งที่สร้างกฎนี้ ไลบรารียังรับช่วงปลั๊กอินจาก Dependency ที่ใช้ exported_plugins ได้ด้วย ทรัพยากรที่ปลั๊กอินสร้างขึ้นจะรวมอยู่ในไฟล์ jar ของกฎนี้
|
resource_jars
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
resource_strip_prefix
|
สตริง ค่าเริ่มต้นคือ
หากระบุไว้ ระบบจะนำคำนำหน้าเส้นทางนี้ออกจากทุกไฟล์ในแอตทริบิวต์ |
runtime_deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ทั่วไป แต่จะไม่ปรากฏในคลาสพาธเวลาคอมไพล์ รายการต่อไปนี้ควรระบุไว้สำหรับทรัพยากร Dependencies ที่จำเป็นเฉพาะในรันไทม์ เครื่องมือวิเคราะห์ Dependency ควรละเว้นเป้าหมายที่ปรากฏทั้งใน runtime_deps และ deps
|
stamp
|
จํานวนเต็ม ค่าเริ่มต้นคือ
ระบบจะไม่สร้างไบนารีที่ประทับตราอีกครั้ง เว้นแต่ทรัพยากร Dependency จะมีการเปลี่ยนแปลง |
use_launcher
|
บูลีน ค่าเริ่มต้นคือ หากตั้งค่าแอตทริบิวต์นี้เป็น "เท็จ" ระบบจะละเว้นแอตทริบิวต์ launcher และ Flag |
use_testrunner
|
บูลีน ค่าเริ่มต้นคือ com.google.testing.junit.runner.BazelTestRunner ) เป็นจุดแรกเข้าหลักสำหรับโปรแกรม Java และระบุคลาสการทดสอบให้กับตัวดำเนินการทดสอบเป็นค่าของพร็อพเพอร์ตี้ระบบ bazel.test_suite
คุณสามารถใช้คำสั่งนี้เพื่อลบล้างลักษณะการทำงานเริ่มต้น ซึ่งจะใช้โปรแกรมรันทดสอบสำหรับกฎ java_test และไม่ใช้กับกฎ java_binary คุณไม่น่าจะต้องดำเนินการนี้ การใช้งานอย่างหนึ่งคือสำหรับAllTest
กฎที่เรียกใช้โดยกฎอื่น (เช่น เพื่อตั้งค่าฐานข้อมูลก่อนทำการทดสอบ) กฎ AllTest ต้องประกาศเป็น java_binary แต่ควรใช้โปรแกรมรันทดสอบเป็นจุดเข้าหลัก
คุณลบล้างชื่อคลาสตัวดำเนินการทดสอบได้ด้วยแอตทริบิวต์ main_class
|
java_import
ดูแหล่งที่มาของกฎjava_import(name, deps, data, 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, 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", ], )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
deps
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
constraints
|
รายการสตริง nonconfigurable ค่าเริ่มต้นคือ |
exports
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
jars
|
รายการป้ายกำกับ (ต้องระบุ) รายการไฟล์ JAR ที่ระบุให้กับเป้าหมาย Java ที่ใช้เป้าหมายนี้ |
neverlink
|
บูลีน ค่าเริ่มต้นคือ tools.jar สําหรับทุกอย่างที่ทํางานบน JDK มาตรฐาน
|
proguard_specs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ android_binary ใดก็ได้โดยขึ้นอยู่กับคลังนี้
ไฟล์ที่รวมอยู่ในที่นี้ต้องมีเฉพาะกฎที่เป็นเอกลักษณ์เท่านั้น ได้แก่ -dontnote, -dontwarn, ignoreเอฟเฟกต์ และกฎที่ขึ้นต้นด้วย -keep ตัวเลือกอื่นๆ จะปรากฏได้ใน Proguard_specs ของ android_binary เท่านั้นเพื่อให้แน่ใจว่ามีการผสานแบบไม่อัตโนมัติ
|
runtime_deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
srcjar
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
java_library
ดูแหล่งที่มาของกฎjava_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)
กฎนี้จะรวบรวมและลิงก์แหล่งที่มาลงในไฟล์ .jar
เป้าหมายเอาต์พุตโดยนัย
libname.jar
: ที่เก็บถาวร Java ที่มีไฟล์คลาสlibname-src.jar
: ไฟล์เก็บถาวรที่มีแหล่งที่มา ("source jar")
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ที่หัวข้อแอตทริบิวต์ทั่วไปที่กฎการสร้างส่วนใหญ่กำหนด
Jar ที่สร้างขึ้นโดยกฎ
ในทางตรงกันข้าม เป้าหมายในแอตทริบิวต์ |
srcs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
คอมไพล์ไฟล์ต้นทางประเภท
ระบบจะแตกไฟล์ต้นฉบับประเภท
กฎ: หากกฎ (โดยทั่วไปคือ
เกือบทุกครั้งจะต้องมีอาร์กิวเมนต์นี้ ยกเว้นในกรณีที่แอตทริบิวต์ |
data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ data ที่หัวข้อแอตทริบิวต์ทั่วไปที่กฎการสร้างส่วนใหญ่กำหนด
เมื่อสร้าง |
resources
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
หากระบุทรัพยากร ระบบจะรวมทรัพยากรไว้ในไฟล์ jar พร้อมกับไฟล์ ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
exported_plugins
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ java_plugin (เช่น โปรแกรมประมวลผลคำอธิบายประกอบ) เพื่อส่งออกไปยังไลบรารีที่ขึ้นต่อกันกับไลบรารีนี้โดยตรง
รายการ |
exports
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
การระบุกฎที่นี่จะทำให้กฎเหล่านั้นพร้อมใช้งานสำหรับกฎหลัก ราวกับว่ากฎหลักใช้กฎเหล่านี้อย่างชัดเจน แต่จะไม่ใช้กับ
สรุป: กฎ X สามารถเข้าถึงโค้ดใน Y ได้หากมีเส้นทางการพึ่งพาระหว่างกันซึ่งเริ่มต้นด้วยขอบ
สมมติว่า A ขึ้นอยู่กับ B และ B ขึ้นอยู่กับ C ในกรณีนี้ C เป็นทรัพยากร Dependency แบบสโลแกนของ A ดังนั้นการเปลี่ยนแหล่งที่มาของ C และการสร้าง A ใหม่จะสร้างทุกอย่างใหม่อย่างถูกต้อง แต่ A จะใช้ชั้นเรียนใน C ไม่ได้ หากต้องการอนุญาตการดำเนินการดังกล่าว ก จะต้องประกาศ ค ใน การปิดไลบรารีที่ส่งออกใช้ได้กับกฎหลักโดยตรงทั้งหมด ลองดูตัวอย่างที่แตกต่างออกไปเล็กน้อย: A ขึ้นอยู่กับ B, B ขึ้นอยู่กับ C และ D และส่งออก C แต่ไม่ส่งออก D ตอนนี้ A มีสิทธิ์เข้าถึง C แต่ไม่มีสิทธิ์เข้าถึง D ตอนนี้หาก C และ D ส่งออกคลังบางรายการเป็น C' และ D' ตามลำดับ A จะเข้าถึงได้เฉพาะ C' เท่านั้น แต่เข้าถึง D' ไม่ได้
สำคัญ: กฎที่ส่งออกไม่ใช่ทรัพยากร Dependency ปกติ กลับมาที่ตัวอย่างก่อนหน้านี้ หาก B ส่งออก C และต้องการใช้ C ด้วย ก็จะต้องระบุ C ใน |
javacopts
|
รายการสตริง ค่าเริ่มต้นคือ ตัวเลือกคอมไพเลอร์เหล่านี้จะส่งไปยัง javac หลังตัวเลือกคอมไพเลอร์ส่วนกลาง |
neverlink
|
บูลีน ค่าเริ่มต้นคือ tools.jar สําหรับทุกสิ่งที่ทํางานบน JDK มาตรฐาน
โปรดทราบว่า หากไลบรารีรันไทม์แตกต่างจากไลบรารีการคอมไพล์ คุณต้องตรวจสอบว่าไลบรารีดังกล่าวแตกต่างกันเฉพาะในส่วนที่ JLS ห้ามไม่ให้คอมไพเลอร์ฝัง (และข้อกำหนดนี้ต้องใช้ได้กับ JLS เวอร์ชันทั้งหมดในอนาคต) |
plugins
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ java_plugin ที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อมีการสร้างกฎนี้ ไลบรารีอาจรับค่าปลั๊กอินจากทรัพยากร Dependency ที่ใช้ exported_plugins ด้วย ทรัพยากรที่ปลั๊กอินสร้างขึ้นจะรวมอยู่ในไฟล์ jar ของกฎนี้
|
proguard_specs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ android_binary ใดก็ได้โดยขึ้นอยู่กับคลังนี้
ไฟล์ที่รวมอยู่ที่นี่ต้องมีกฎแบบ idempotent เท่านั้น ได้แก่ -dontnote, -dontwarn, assumenosideeffects และกฎที่ขึ้นต้นด้วย -keep ตัวเลือกอื่นๆ จะปรากฏใน proguard_specs ของ android_binary เท่านั้น เพื่อให้การผสานไม่ซ้ำกัน
|
resource_jars
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
resource_strip_prefix
|
สตริง ค่าเริ่มต้นคือ
หากระบุไว้ ระบบจะนำคำนำหน้าเส้นทางนี้ออกจากทุกไฟล์ในแอตทริบิวต์ |
runtime_deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ทั่วไป รายการเหล่านี้จะปรากฏใน classpath รันไทม์ แต่จะไม่ปรากฏใน classpath ขณะคอมไพล์ รายการต่อไปนี้ควรระบุไว้สำหรับทรัพยากร Dependencies ที่จำเป็นเฉพาะในรันไทม์ เครื่องมือวิเคราะห์ Dependency ควรละเว้นเป้าหมายที่ปรากฏทั้งใน runtime_deps และ deps
|
java_lite_proto_library
ดูแหล่งที่มาของกฎjava_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
java_lite_proto_library
สร้างโค้ด Java จากไฟล์ .proto
deps
ต้องชี้ไปยังกฎ proto_library
ตัวอย่าง
java_library( name = "lib", deps = [":foo"], ) java_lite_proto_library( name = "foo", deps = [":bar"], ) proto_library( name = "bar", )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ proto_library ที่จะสร้างโค้ด Java
|
java_proto_library
ดูแหล่งที่มาของกฎjava_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
java_proto_library
สร้างโค้ด Java จากไฟล์ .proto
deps
ต้องชี้ไปยังกฎ proto_library
ตัวอย่าง
java_library( name = "lib", deps = [":foo_java_proto"], ) java_proto_library( name = "foo_java_proto", deps = [":foo_proto"], ) proto_library( name = "foo_proto", )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ proto_library สำหรับสร้างโค้ด Java
|
java_test
ดูแหล่งที่มาของกฎjava_test(name, deps, srcs, data, resources, args, 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, plugins, resource_jars, 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 โดยการทดสอบจะเป็น Wrapper แบบไบนารีรอบโค้ดทดสอบ ระบบจะเรียกใช้เมธอดหลักของโปรแกรมรันทดสอบแทนการคอมไพล์คลาสหลัก
เป้าหมายเอาต์พุตโดยนัย
name.jar
: ที่เก็บถาวรสำหรับ Javaname_deploy.jar
: ที่เก็บถาวรของ Java ที่เหมาะสำหรับการทำให้ใช้งานได้ (จะสร้างขึ้นก็ต่อเมื่อมีการขออย่างชัดเจนเท่านั้น) ดูรายละเอียดเพิ่มเติมได้ในคำอธิบายname_deploy.jar
เอาต์พุตจาก java_binary
ดูส่วนเกี่ยวกับอาร์กิวเมนต์ java_binary() กฎนี้ยังรองรับแอตทริบิวต์ทั่วไปทั้งหมดสำหรับกฎการทดสอบทั้งหมด ("*_test)") ด้วย
ตัวอย่าง
java_library( name = "tests", srcs = glob(["*.java"]), deps = [ "//java/com/foo/base:testResources", "//java/com/foo/testing/util", ], ) java_test( name = "AllTests", size = "small", runtime_deps = [ ":tests", "//util/mysql", ], )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ที่หัวข้อแอตทริบิวต์ทั่วไปที่กฎการสร้างส่วนใหญ่กำหนด
|
srcs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
คอมไพล์ไฟล์ต้นทางประเภท
ระบบจะแตกไฟล์ต้นฉบับประเภท
กฎ: หากกฎ (โดยทั่วไปคือ
เกือบทุกครั้งจะต้องมีอาร์กิวเมนต์นี้ ยกเว้นในกรณีที่แอตทริบิวต์ |
resources
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
หากระบุทรัพยากร ระบบจะรวมทรัพยากรไว้ในไฟล์ jar พร้อมกับไฟล์ ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
classpath_resources
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ
รายการทรัพยากรที่ต้องอยู่ที่รูทของต้นไม้ Java วัตถุประสงค์เดียวของแอตทริบิวต์นี้คือเพื่อรองรับไลบรารีของบุคคลที่สามที่กำหนดให้ต้องพบทรัพยากรในคลาสพาธเป็น |
create_executable
|
บูลีน nonconfigurable ค่าเริ่มต้นคือ java_single_jar แทน
|
deploy_manifest_lines
|
รายการสตริง ค่าเริ่มต้นคือ META-INF/manifest.mf ที่สร้างขึ้นสำหรับเป้าหมาย *_deploy.jar เนื้อหาของแอตทริบิวต์นี้ไม่อยู่ภายใต้การแทนที่"สร้างตัวแปร"
|
javacopts
|
รายการสตริง ค่าเริ่มต้นคือ ระบบจะส่งตัวเลือกคอมไพเลอร์เหล่านี้ไปยัง javac หลังจากตัวเลือกคอมไพเลอร์ส่วนกลาง |
jvm_flags
|
รายการสตริง ค่าเริ่มต้นคือ สคริปต์ Wrapper สําหรับไบนารี Java จะมีการกําหนด CLASSPATH (เพื่อค้นหา JAR ทั้งหมดที่ต้องพึ่งพา) และเรียกใช้โปรแกรมแปลภาษา Java ที่ถูกต้อง
บรรทัดคำสั่งที่สร้างขึ้นโดยสคริปต์ Wrapper จะมีชื่อของคลาสหลักตามด้วย โปรดทราบว่าแอตทริบิวต์นี้ไม่มีผลต่อเอาต์พุต |
launcher
|
ป้ายกํากับ ค่าเริ่มต้นคือ bin/java ปกติที่รวมอยู่ใน JDK
เป้าหมายต้องเป็น cc_binary คุณสามารถระบุ cc_binary ใดก็ได้ที่ใช้
Invocation API ของ Java เป็นค่าสำหรับแอตทริบิวต์นี้
โดยค่าเริ่มต้น Bazel จะใช้ตัวเปิด JDK ปกติ (bin/java หรือ java.exe) Flag โปรดทราบว่าระบบจะสร้างการพึ่งพาแบบเนทีฟ (C++, SWIG, JNI) แตกต่างกันไป ขึ้นอยู่กับว่าคุณใช้ Launcher ของ JDK หรือ Launcher อื่น
เมื่อใช้ Launcher อื่นที่ไม่ใช่ Launcher JDK เริ่มต้น รูปแบบของเอาต์พุต |
main_class
|
สตริง ค่าเริ่มต้นคือ main() เพื่อใช้เป็นจุดแรกเข้า
หากกฎใช้ตัวเลือกนี้ ก็ไม่จำเป็นต้องมีรายการ srcs=[...]
ดังนั้น คุณจึงสร้างไฟล์ปฏิบัติการจากไลบรารี Java ที่มีเมธอด main() อย่างน้อย 1 รายการอยู่แล้วได้โดยใช้แอตทริบิวต์นี้
ค่าของแอตทริบิวต์นี้คือชื่อคลาส ไม่ใช่ไฟล์ต้นทาง คลาสต้องพร้อมใช้งานในรันไทม์ โดยอาจได้รับการคอมไพล์โดยกฎนี้ (จาก |
plugins
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ java_plugin ที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อมีการสร้างกฎนี้ ไลบรารียังรับช่วงปลั๊กอินจาก Dependency ที่ใช้ exported_plugins ได้ด้วย ทรัพยากรที่ปลั๊กอินสร้างขึ้นจะรวมอยู่ในไฟล์ jar ของกฎนี้
|
resource_jars
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
resource_strip_prefix
|
สตริง ค่าเริ่มต้นคือ
หากระบุไว้ ระบบจะนำคำนำหน้าเส้นทางนี้ออกจากทุกไฟล์ในแอตทริบิวต์ |
runtime_deps
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ deps ทั่วไป แต่จะไม่ปรากฏในคลาสพาธเวลาคอมไพล์ รายการต่อไปนี้ควรระบุไว้สำหรับทรัพยากร Dependencies ที่จำเป็นเฉพาะในรันไทม์ เครื่องมือวิเคราะห์ Dependency ควรละเว้นเป้าหมายที่ปรากฏทั้งใน runtime_deps และ deps
|
stamp
|
จํานวนเต็ม ค่าเริ่มต้นคือ
ระบบจะไม่สร้างไฟล์ไบนารีที่มีตราประทับอีกครั้ง เว้นแต่จะมีการเปลี่ยนแปลงทรัพยากร Dependency |
test_class
|
สตริง ค่าเริ่มต้นคือ
โดยค่าเริ่มต้น หากไม่ได้กําหนดอาร์กิวเมนต์นี้ ระบบจะใช้โหมดเดิมและใช้อาร์กิวเมนต์ทดสอบแทน ตั้งค่า Flag
แอตทริบิวต์นี้ระบุชื่อคลาส Java ที่การทดสอบนี้จะเรียกใช้ คุณไม่จำเป็นต้องตั้งค่านี้บ่อยนัก หากไม่ระบุอาร์กิวเมนต์นี้ ระบบจะอนุมานโดยใช้
สำหรับ JUnit3 คลาสทดสอบต้องเป็นคลาสย่อยของ
แอตทริบิวต์นี้ช่วยให้กฎ |
use_launcher
|
บูลีน ค่าเริ่มต้นคือ หากตั้งค่าแอตทริบิวต์นี้เป็น "เท็จ" ระบบจะละเว้นแอตทริบิวต์ launcher และแฟล็ก |
use_testrunner
|
บูลีน ค่าเริ่มต้นคือ com.google.testing.junit.runner.BazelTestRunner ) เป็นจุดแรกเข้าหลักสำหรับโปรแกรม Java และระบุคลาสทดสอบให้กับโปรแกรมทดสอบเป็นค่าของพร็อพเพอร์ตี้ระบบ bazel.test_suite
คุณสามารถใช้คำสั่งนี้เพื่อลบล้างลักษณะการทำงานเริ่มต้น ซึ่งจะใช้โปรแกรมรันทดสอบสำหรับกฎ java_test และไม่ใช้กับกฎ java_binary คุณไม่น่าจะต้องดำเนินการนี้ การใช้งานอย่างหนึ่งคือสำหรับAllTest
กฎที่เรียกใช้โดยกฎอื่น (เช่น เพื่อตั้งค่าฐานข้อมูลก่อนทำการทดสอบ) กฎ AllTest ต้องประกาศเป็น java_binary แต่ควรใช้โปรแกรมรันทดสอบเป็นจุดเข้าหลัก
คุณลบล้างชื่อคลาสโปรแกรมรันทดสอบได้ด้วยแอตทริบิวต์ main_class
|
java_package_configuration
ดูแหล่งที่มาของกฎjava_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, 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", ] )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
data
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
javacopts
|
รายการสตริง ค่าเริ่มต้นคือ |
packages
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ package_group ที่ควรใช้การกําหนดค่า
|
java_plugin
ดูแหล่งที่มาของกฎjava_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)
java_plugin
กำหนดปลั๊กอินสำหรับคอมไพเลอร์ Java ที่ Bazel เรียกใช้ ในขณะนี้ ปลั๊กอินเพียงประเภทเดียวที่รองรับคือตัวประมวลผลคำอธิบายประกอบ กฎ java_library
หรือ java_binary
สามารถเรียกใช้ปลั๊กอินโดยอาศัยปลั๊กอินผ่านแอตทริบิวต์ plugins
นอกจากนี้ java_library
ยังส่งออกปลั๊กอินไปยังไลบรารีที่ขึ้นต่อกันโดยตรงได้โดยใช้ exported_plugins
โดยอัตโนมัติ
เป้าหมายเอาต์พุตโดยนัย
libname.jar
: ที่เก็บ Java
อาร์กิวเมนต์จะเหมือนกับ java_library
ยกเว้นการใส่อาร์กิวเมนต์ processor_class
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ deps ที่หัวข้อแอตทริบิวต์ทั่วไปที่กฎการสร้างส่วนใหญ่กำหนด
Jar ที่สร้างขึ้นโดยกฎ
ในทางตรงกันข้าม เป้าหมายในแอตทริบิวต์ |
srcs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
คอมไพล์ไฟล์ต้นทางประเภท
ระบบจะแตกไฟล์ต้นฉบับประเภท
กฎ: หากกฎ (โดยทั่วไปคือ
เกือบทุกครั้งจะต้องมีอาร์กิวเมนต์นี้ ยกเว้นในกรณีที่แอตทริบิวต์ |
data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ data ที่หัวข้อแอตทริบิวต์ทั่วไปที่กฎการสร้างส่วนใหญ่กำหนด
เมื่อสร้าง |
resources
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ
หากระบุทรัพยากร ระบบจะรวมทรัพยากรไว้ในไฟล์ jar พร้อมกับไฟล์ ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
generates_api
|
บูลีน ค่าเริ่มต้นคือ หากกฎใช้ตัวประมวลผลคำอธิบายประกอบที่สร้าง API กฎอื่นๆ ที่ขึ้นอยู่กับกฎดังกล่าวจะอ้างอิงโค้ดที่สร้างขึ้นได้ก็ต่อเมื่อมีการตั้งเวลาการดำเนินการคอมไพล์ไว้หลังกฎที่สร้าง แอตทริบิวต์นี้บอกให้ Bazel ระบุข้อจำกัดการกําหนดเวลาเมื่อเปิดใช้ --java_header_compilation คำเตือน: แอตทริบิวต์นี้ส่งผลต่อประสิทธิภาพการสร้าง ให้ใช้เฉพาะในกรณีที่จำเป็น |
javacopts
|
รายการสตริง ค่าเริ่มต้นคือ ระบบจะส่งตัวเลือกคอมไพเลอร์เหล่านี้ไปยัง javac หลังจากตัวเลือกคอมไพเลอร์ส่วนกลาง |
neverlink
|
บูลีน ค่าเริ่มต้นคือ tools.jar สําหรับทุกสิ่งที่ทํางานบน JDK มาตรฐาน
โปรดทราบว่า หากไลบรารีรันไทม์แตกต่างจากไลบรารีการคอมไพล์ คุณต้องตรวจสอบว่าไลบรารีดังกล่าวแตกต่างกันเฉพาะในส่วนที่ JLS ห้ามไม่ให้คอมไพเลอร์ฝัง (และข้อกำหนดนี้ต้องใช้ได้กับ JLS เวอร์ชันทั้งหมดในอนาคต) |
output_licenses
|
ประเภทใบอนุญาต ค่าเริ่มต้นคือ common attributes
|
plugins
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ java_plugin ทั้งหมดที่ระบุในแอตทริบิวต์นี้ทุกครั้งที่สร้างกฎนี้ ไลบรารียังรับช่วงปลั๊กอินจาก Dependency ที่ใช้ exported_plugins ได้ด้วย ทรัพยากรที่สร้างโดยปลั๊กอินจะรวมอยู่ใน Jar ผลลัพธ์ของกฎนี้
|
processor_class
|
สตริง ค่าเริ่มต้นคือ |
proguard_specs
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ android_binary ใดก็ได้โดยขึ้นอยู่กับคลังนี้
ไฟล์ที่รวมอยู่ที่นี่ต้องมีกฎแบบ idempotent เท่านั้น ได้แก่ -dontnote, -dontwarn, assumenosideeffects และกฎที่ขึ้นต้นด้วย -keep ตัวเลือกอื่นๆ จะปรากฏใน proguard_specs ของ android_binary เท่านั้น เพื่อให้การผสานไม่ซ้ำกัน
|
resource_jars
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
resource_strip_prefix
|
สตริง ค่าเริ่มต้นคือ
หากระบุไว้ ระบบจะนำคำนำหน้าเส้นทางนี้ออกจากทุกไฟล์ในแอตทริบิวต์ |
java_runtime
ดูแหล่งที่มาของกฎjava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_ct_sym, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, version, visibility)
ระบุการกําหนดค่าสําหรับรันไทม์ Java
ตัวอย่าง
java_runtime( name = "jdk-9-ea+153", srcs = glob(["jdk9-ea+153/**"]), java_home = "jdk9-ea+153", )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ |
srcs
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
default_cds
|
ป้ายกํากับ ค่าเริ่มต้นคือ java_runtime แบบปิด เมื่อเปิดใช้ Hermetic สำหรับเป้าหมาย java_binary และหากเป้าหมายไม่มีที่เก็บถาวร CDS ของตนเองโดยการระบุแอตทริบิวต์ classlist ระบบจะจัดแพ็กเกจ CDS เริ่มต้น java_runtime ไว้ใน JAR ที่ทำให้ใช้งานได้แบบสนิม
|
hermetic_srcs
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
java
|
ป้ายกำกับ ค่าเริ่มต้นคือ |
java_home
|
สตริง ค่าเริ่มต้นคือ srcs และ java ต้องว่างเปล่า
|
lib_ct_sym
|
ป้ายกํากับ ค่าเริ่มต้นคือ --release หากไม่ได้ระบุและไฟล์ใน srcs มีเพียงไฟล์เดียวที่มีเส้นทางลงท้ายด้วย /lib/ct.sym ระบบจะใช้ไฟล์นั้น
|
lib_modules
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
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_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, 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", )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
android_lint_data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
android_lint_jvm_opts
|
รายการสตริง ค่าเริ่มต้นคือ |
android_lint_opts
|
รายการสตริง ค่าเริ่มต้นคือ |
android_lint_package_configuration
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
android_lint_runner
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
bootclasspath
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
deps_checker
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
forcibly_disable_header_compilation
|
บูลีน ค่าเริ่มต้นคือ |
genclass
|
รายการป้ายกำกับ ต้องระบุ ป้ายกำกับของไฟล์ JAR สำหรับติดตั้ง GenClass |
header_compiler
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ |
header_compiler_direct
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ เครื่องมือนี้ไม่รองรับการประมวลผลคำอธิบายประกอบ |
ijar
|
รายการป้ายกำกับ ต้องระบุ ป้ายกำกับของไฟล์ปฏิบัติการ ijar |
jacocorunner
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
java_runtime
|
ป้ายกำกับ ต้องระบุ java_runtime ที่จะใช้กับชุดเครื่องมือนี้ โดยมีค่าเริ่มต้นเป็น java_runtime ในการกำหนดค่าการดำเนินการ |
javabuilder
|
รายการป้ายกำกับ (ต้องระบุ) ป้ายกำกับของไฟล์ jar ที่ใช้ติดตั้ง JavaBuilder |
javabuilder_data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
javabuilder_jvm_opts
|
รายการสตริง ค่าเริ่มต้นคือ |
javac_supports_multiplex_workers
|
บูลีน ค่าเริ่มต้นคือ |
javac_supports_workers
|
บูลีน ค่าเริ่มต้นคือ |
javacopts
|
รายการสตริง ค่าเริ่มต้นคือ |
jvm_opts
|
รายการสตริง ค่าเริ่มต้นคือ |
oneversion
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
oneversion_allowlist_for_tests
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
oneversion_whitelist
|
ป้ายกำกับ ค่าเริ่มต้นคือ |
package_configuration
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
proguard_allowlister
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
resourcejar
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
singlejar
|
รายการป้ายกำกับ (ต้องระบุ) ป้ายกำกับของ Jar ทำให้ใช้งานได้ของ SingleJar |
source_version
|
สตริง ค่าเริ่มต้นคือ |
target_version
|
สตริง ค่าเริ่มต้นคือ |
timezone_data
|
ป้ายกํากับ ค่าเริ่มต้นคือ |
tools
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
turbine_data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ |
turbine_jvm_opts
|
รายการสตริง ค่าเริ่มต้นคือ |
xlint
|
รายการสตริง ค่าเริ่มต้นคือ |