กฎ
- 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 ที่มีชื่อเดียวกับกฎ สคริปต์ Shell Wrapper จะใช้คลาสพาธซึ่งรวมไฟล์ Jar สำหรับไลบรารีแต่ละไลบรารีที่ไบนารีอ้างอิงอยู่
สคริปต์ Wrapper ยอมรับแฟล็กที่ไม่ซ้ำกันหลายรายการ โปรดดู //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
สำหรับรายการแฟล็กที่กำหนดค่าได้และตัวแปรสภาพแวดล้อมที่ Wrapper ยอมรับ
เป้าหมายเอาต์พุตโดยนัย
name.jar
: ที่เก็บถาวรของ Java ที่มีไฟล์คลาสและทรัพยากรอื่นๆ ที่เกี่ยวข้องกับทรัพยากร Dependency โดยตรงของไบนารีname-src.jar
: ที่เก็บถาวรที่มีแหล่งที่มา ("jar แหล่งที่มา")name_deploy.jar
: ที่เก็บถาวรของ Java ที่เหมาะสำหรับการทำให้ใช้งานได้ (สร้างเมื่อมีการขออย่างชัดแจ้งเท่านั้น)การสร้างเป้าหมาย
<name>_deploy.jar
สำหรับกฎจะสร้างไฟล์ Jar แบบในตัวโดยมีไฟล์ Manifest ที่อนุญาตให้เรียกใช้ด้วยคำสั่งjava -jar
หรือด้วยตัวเลือก--singlejar
ของสคริปต์ Wrapper เราขอแนะนำให้ใช้สคริปต์ Wrapper สำหรับjava -jar
เนื่องจากสคริปต์ดังกล่าวส่งแฟล็ก JVM และตัวเลือกในการโหลดไลบรารีเนทีฟด้วยJar การทำให้ใช้งานได้มีคลาสทั้งหมดที่ตัวโหลดคลาสจะพบซึ่งค้นหาคลาสพาธจากสคริปต์ Wrapper ของไบนารีตั้งแต่ต้นจนจบ และยังมีไลบรารีเนทีฟที่จำเป็นสำหรับทรัพยากร Dependency ด้วย ซึ่งระบบจะโหลดข้อมูลเหล่านี้ลงใน JVM โดยอัตโนมัติระหว่างรันไทม์
หากเป้าหมายระบุแอตทริบิวต์ Launcher _deploy.jar จะเป็นไบนารีเนทีฟแทนการเป็นไฟล์ JAR ปกติ ซึ่งจะมี Launcher รวมถึงทรัพยากร Dependency (C++) ของกฎทั้งหมด ซึ่งจะลิงก์กับไบนารีแบบคงที่ ไบต์จริงของไฟล์ jar จะต่อท้ายไบนารีดั้งเดิมนั้น เพื่อสร้าง Blob ของไบนารีหนึ่งที่มีทั้งไฟล์ปฏิบัติการและโค้ด Java คุณเรียกใช้ไฟล์ Jar ที่ได้ได้โดยตรงเหมือนที่ทำกับไบนารีเนทีฟ
name_deploy-src.jar
: ที่เก็บถาวรซึ่งมีแหล่งที่มาที่รวบรวมจากการปิดเป้าหมายแบบชั่วคราว รายการเหล่านี้จะตรงกับคลาสในdeploy.jar
ยกเว้นกรณีที่ Jars ไม่มี 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
|
launcher หรือ main_class ไว้ ข้อผิดพลาดจะต้องกำหนดค่าเป็น 0
|
deploy_env
|
java_binary อื่นๆ ที่แสดงถึงสภาพแวดล้อม
การทำให้ใช้งานได้สำหรับไบนารีนี้
ตั้งค่าแอตทริบิวต์นี้เมื่อสร้างปลั๊กอินซึ่ง java_binary อื่นจะโหลดปลั๊กอินการตั้งค่าแอตทริบิวต์นี้จะยกเว้นทรัพยากร Dependency ทั้งหมดจาก classpath รันไทม์ (และ jar การทำให้ใช้งานได้) ของไบนารีนี้ที่แชร์ระหว่างไบนารีนี้กับเป้าหมายที่ระบุใน deploy_env
|
deploy_manifest_lines
|
META-INF/manifest.mf ที่สร้างขึ้นสำหรับเป้าหมาย *_deploy.jar เนื้อหาของแอตทริบิวต์นี้ไม่อยู่ภายใต้การแทนที่ "สร้างตัวแปร"
|
javacopts
|
ระบบจะส่งตัวเลือกคอมไพเลอร์เหล่านี้ไปยัง javac หลังจากตัวเลือกคอมไพเลอร์ส่วนกลาง |
jvm_flags
|
สคริปต์ Wrapper สำหรับไบนารีของ Java มีคําจํากัดความ CLASSPATH (เพื่อค้นหา Jars ที่ขึ้นต่อกันทั้งหมด) และเรียกใช้อินเทอร์พรีเตอร์ Java ที่ถูกต้อง
บรรทัดคำสั่งที่สร้างโดยสคริปต์ Wrapper จะมีชื่อของคลาสหลักตามด้วย โปรดทราบว่าแอตทริบิวต์นี้ไม่มีผลกับเอาต์พุต |
launcher
|
bin/java ปกติที่รวมอยู่ใน JDK
เป้าหมายต้องเป็น cc_binary คุณระบุ cc_binary ที่ใช้
Ja Invocation API เป็นค่าสำหรับแอตทริบิวต์นี้ได้
โดยค่าเริ่มต้น Bazel จะใช้ JDK Launcher ปกติ (bin/java หรือ java.exe) แฟล็ก โปรดทราบว่าระบบจะสร้างทรัพยากร Dependency แบบเนทีฟ (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 ทั่วไป แต่จะไม่ปรากฏในคลาสพาธของเวลาคอมไพล์ ไม่เหมือนกับ deps ทรัพยากร Dependency ที่จำเป็นเฉพาะรันไทม์ควรแสดงรายการที่นี่ เครื่องมือวิเคราะห์การขึ้นต่อกันควรไม่สนใจเป้าหมายที่ปรากฏในทั้ง runtime_deps และ deps
|
stamp
|
ระบบจะไม่สร้างไบนารีที่ประทับตราขึ้นมาใหม่เว้นแต่มีการเปลี่ยนแปลงทรัพยากร Dependency |
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_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
|
|
exports
|
|
jars
|
|
neverlink
|
tools.jar สำหรับอะไรก็ตามที่ทำงานบน JDK มาตรฐาน
|
proguard_specs
|
android_binary ใดก็ตาม ทั้งนี้ขึ้นอยู่กับไลบรารีนี้
ไฟล์ที่ระบุไว้ที่นี่ต้องมีเฉพาะกฎแบบ ID เท่านั้น ได้แก่ -dontnote, -dontwarn,
summarynosideeffects และกฎที่ขึ้นต้นด้วย -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
: ที่เก็บถาวรที่มีแหล่งที่มา ("jar แหล่งที่มา")
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
deps ที่แอตทริบิวต์ทั่วไปที่กำหนดโดยกฎการสร้างส่วนใหญ่
Jars ที่สร้างขึ้นโดยกฎ
ในทางตรงกันข้าม เป้าหมายในแอตทริบิวต์ |
srcs
|
ไฟล์ต้นฉบับประเภท
ไฟล์ต้นฉบับประเภท
กฎ: หากกฎ (โดยทั่วไปคือ
ระบบจำเป็นต้องใช้อาร์กิวเมนต์นี้เกือบทุกครั้ง ยกเว้นในกรณีที่แอตทริบิวต์ |
data
|
data ที่แอตทริบิวต์ทั่วไปที่กำหนดโดยกฎการสร้างส่วนใหญ่
เมื่อสร้าง |
resources
|
หากระบุทรัพยากรแล้ว ระบบจะรวมทรัพยากรเหล่านั้นไว้ใน Jar พร้อมกับไฟล์ ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
exported_plugins
|
java_plugin (เช่น ตัวประมวลผลคำอธิบายประกอบ) ที่จะส่งออกไปยังไลบรารีที่ขึ้นอยู่กับไลบรารีนี้โดยตรง
ระบบจะใช้รายการ |
exports
|
กฎข้อมูลที่นี่จะทำให้กฎระดับบนสุดใช้งานได้ เหมือนกับว่ากฎระดับบนสุดนั้นจะขึ้นอยู่กับกฎเหล่านี้อย่างชัดแจ้ง กรณีนี้ไม่จริงสําหรับ
สรุป: กฎ X จะเข้าถึงโค้ดใน Y ได้หากมีเส้นทางทรัพยากร Dependency ระหว่างเส้นทางเหล่านั้นที่เริ่มต้นด้วยขอบ
สมมติว่า A ขึ้นอยู่กับ B และ B ขึ้นอยู่กับ C ในกรณีนี้ C เป็นทรัพยากร Dependency แบบสกรรมของ A ดังนั้นการเปลี่ยนแหล่งที่มาของ C และการสร้าง A ใหม่จะเป็นการสร้างทุกสิ่งขึ้นใหม่อย่างถูกต้อง แต่ A จะใช้คลาสใน C ไม่ได้ หากต้องการให้เป็นเช่นนั้น A ต้องประกาศ C ใน การปิดไลบรารีที่ส่งออกจะใช้ได้กับกฎระดับบนสุดโดยตรงทั้งหมด ใช้ตัวอย่างที่แตกต่างเล็กน้อย: A ขึ้นอยู่กับ B ส่วน B ขึ้นอยู่กับ C และ D รวมถึงส่งออก C ด้วย แต่ไม่ใช่ D ตอนนี้ A มีสิทธิ์เข้าถึง C แต่ไม่มีสิทธิ์เข้าถึง D ตอนนี้หาก C และ D ส่งออกไลบรารีบางรายการ C' และ D' ตามลำดับ A จะเข้าถึงได้เฉพาะ C' แต่จะไม่เข้าถึง D'
สำคัญ: กฎที่ส่งออกไม่ใช่ทรัพยากร Dependency ปกติ ตามตัวอย่างก่อนหน้านี้ หาก B ส่งออก C และต้องการใช้ C ด้วย ก็จะต้องระบุ |
javacopts
|
ระบบจะส่งตัวเลือกคอมไพเลอร์เหล่านี้ไปยัง javac หลังจากตัวเลือกคอมไพเลอร์ส่วนกลาง |
neverlink
|
tools.jar สำหรับอะไรก็ตามที่ทำงานบน JDK มาตรฐาน
โปรดทราบว่า หากไลบรารีรันไทม์แตกต่างจากไลบรารีการคอมไพล์ คุณต้องตรวจสอบว่าไลบรารีนี้แตกต่างเฉพาะในตำแหน่งที่ JLS กำหนดให้คอมไพเลอร์ไม่สามารถแทรกในบรรทัด (และที่ต้องระงับสำหรับ JLS เวอร์ชันในอนาคตทั้งหมด) |
plugins
|
java_plugin ทั้งหมดที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อมีการสร้างกฎนี้ ไลบรารีอาจรับค่าปลั๊กอินจากทรัพยากร Dependency ที่ใช้ exported_plugins ด้วย ทรัพยากรที่ปลั๊กอินสร้างขึ้นจะรวมอยู่ใน Jar ที่เป็นผลลัพธ์ของกฎนี้
|
proguard_specs
|
android_binary ใดก็ตาม ทั้งนี้ขึ้นอยู่กับไลบรารีนี้
ไฟล์ที่ระบุไว้ที่นี่ต้องมีเฉพาะกฎแบบ ID เท่านั้น ได้แก่ -dontnote, -dontwarn,
summarynosideeffects และกฎที่ขึ้นต้นด้วย -keep ตัวเลือกอื่นๆ จะปรากฏใน Proguard_specs ของ android_binary เท่านั้นเพื่อให้แน่ใจว่ามีการผสานที่ไม่ใช่แบบโทโลจี
|
resource_jars
|
|
resource_strip_prefix
|
หากระบุไว้ ระบบจะตัดคำนำหน้าเส้นทางออกจากทุกไฟล์ในแอตทริบิวต์ |
runtime_deps
|
deps ทั่วไป แต่จะไม่ปรากฏในคลาสพาธของเวลาคอมไพล์ ไม่เหมือนกับ deps ทรัพยากร 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
|
launcher หรือ main_class ไว้ ข้อผิดพลาดจะต้องกำหนดค่าเป็น 0
|
deploy_manifest_lines
|
META-INF/manifest.mf ที่สร้างขึ้นสำหรับเป้าหมาย *_deploy.jar เนื้อหาของแอตทริบิวต์นี้ไม่อยู่ภายใต้การแทนที่ "สร้างตัวแปร"
|
javacopts
|
ระบบจะส่งตัวเลือกคอมไพเลอร์เหล่านี้ไปยัง javac หลังจากตัวเลือกคอมไพเลอร์ส่วนกลาง |
jvm_flags
|
สคริปต์ Wrapper สำหรับไบนารีของ Java มีคําจํากัดความ CLASSPATH (เพื่อค้นหา Jars ที่ขึ้นต่อกันทั้งหมด) และเรียกใช้อินเทอร์พรีเตอร์ Java ที่ถูกต้อง
บรรทัดคำสั่งที่สร้างโดยสคริปต์ Wrapper จะมีชื่อของคลาสหลักตามด้วย โปรดทราบว่าแอตทริบิวต์นี้ไม่มีผลกับเอาต์พุต |
launcher
|
bin/java ปกติที่รวมอยู่ใน JDK
เป้าหมายต้องเป็น cc_binary คุณระบุ cc_binary ที่ใช้
Ja Invocation API เป็นค่าสำหรับแอตทริบิวต์นี้ได้
โดยค่าเริ่มต้น Bazel จะใช้ JDK Launcher ปกติ (bin/java หรือ java.exe) แฟล็ก โปรดทราบว่าระบบจะสร้างทรัพยากร Dependency แบบเนทีฟ (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 ทั่วไป แต่จะไม่ปรากฏในคลาสพาธของเวลาคอมไพล์ ไม่เหมือนกับ deps ทรัพยากร Dependency ที่จำเป็นเฉพาะรันไทม์ควรแสดงรายการที่นี่ เครื่องมือวิเคราะห์การขึ้นต่อกันควรไม่สนใจเป้าหมายที่ปรากฏในทั้ง runtime_deps และ deps
|
stamp
|
ระบบจะไม่สร้างไบนารีที่ประทับตราขึ้นมาใหม่เว้นแต่มีการเปลี่ยนแปลงทรัพยากร Dependency |
test_class
|
โดยค่าเริ่มต้น หากไม่ได้กำหนดอาร์กิวเมนต์นี้ ระบบจะใช้โหมดเดิมและจะใช้อาร์กิวเมนต์ทดสอบแทน ตั้งค่าแฟล็ก
แอตทริบิวต์นี้ระบุชื่อของคลาส 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 ที่แอตทริบิวต์ทั่วไปที่กำหนดโดยกฎการสร้างส่วนใหญ่
Jars ที่สร้างขึ้นโดยกฎ
ในทางตรงกันข้าม เป้าหมายในแอตทริบิวต์ |
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 ใดก็ตาม ทั้งนี้ขึ้นอยู่กับไลบรารีนี้
ไฟล์ที่ระบุไว้ที่นี่ต้องมีเฉพาะกฎแบบ ID เท่านั้น ได้แก่ -dontnote, -dontwarn,
summarynosideeffects และกฎที่ขึ้นต้นด้วย -keep ตัวเลือกอื่นๆ จะปรากฏใน Proguard_specs ของ android_binary เท่านั้นเพื่อให้แน่ใจว่ามีการผสานที่ไม่ใช่แบบโทโลจี
|
resource_jars
|
|
resource_strip_prefix
|
หากระบุไว้ ระบบจะตัดคำนำหน้าเส้นทางออกจากทุกไฟล์ในแอตทริบิวต์ |
java_runtime
java_runtime(name, srcs, compatible_with, deprecation, distribs, features, hermetic_srcs, java, java_home, 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
|
|
hermetic_srcs
|
|
java
|
|
java_home
|
srcs และ java ต้องว่างเปล่า
|
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_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
|
|
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
|
|
oneversion
|
|
oneversion_whitelist
|
|
package_configuration
|
|
proguard_allowlister
|
|
resourcejar
|
|
singlejar
|
|
source_version
|
|
target_version
|
|
timezone_data
|
|
tools
|
|
turbine_data
|
|
turbine_jvm_opts
|
|
xlint
|
|