กฎ
- 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") รวมถึงสคริปต์ Shell 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 ทำให้ใช้งานได้มีคลาสทั้งหมดที่ classloader พบซึ่ง ค้นหาคลาสพาธจากสคริปต์ Wrapper ของไบนารีตั้งแต่ต้นจนจบ และ มีไลบรารีแบบเนทีฟที่จำเป็นสำหรับทรัพยากร Dependency ระบบจะโหลดวิดีโอเหล่านี้โดยอัตโนมัติ ลงใน JVM ในช่วงรันไทม์
หากเป้าหมายระบุ Launcher ของคุณ แทนที่จะเป็นไฟล์ JAR ปกติ _deploy.jar จะเป็น เลขฐานสองแบบเนทีฟ ซึ่งจะมี Launcher และการอ้างอิงดั้งเดิม (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
|
หากระบุทรัพยากร ทรัพยากรจะถูกรวมกลุ่มไว้ในโหลพร้อมกับ
ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
classpath_resources
|
รายการทรัพยากรที่ต้องอยู่ที่รูทของ Java Tree ของแอตทริบิวต์นี้
วัตถุประสงค์เฉพาะคือการสนับสนุนไลบรารีของบุคคลที่สามที่จำเป็นต้องมีทรัพยากร
พบในคลาสพาธตรงกับ |
create_executable
|
launcher หรือ main_class
ได้รับการตั้งค่าแล้ว
|
deploy_env
|
java_binary อื่นๆ ที่แสดงถึงการทำให้ใช้งานได้
สำหรับไบนารีนี้
ตั้งค่าแอตทริบิวต์นี้เมื่อสร้างปลั๊กอินซึ่งจะโหลดโดยปลั๊กอินอื่น
java_binary การตั้งค่าแอตทริบิวต์นี้จะไม่รวมทรัพยากร Dependency ทั้งหมดจาก คลาสพาธรันไทม์ (และ 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 ใดๆ ที่
จะใช้
สามารถระบุ Java Invocation API เป็นค่าสำหรับแอตทริบิวต์นี้ได้
โดยค่าเริ่มต้น Bazel จะใช้ JDK Launcher ปกติ (bin/java หรือ java.exe) แฟล็ก Bazel ที่เกี่ยวข้องของ โปรดทราบว่าระบบจะสร้างทรัพยากร Dependency ดั้งเดิม (C++, SWIG, JNI) ในรูปแบบอื่น ขึ้นอยู่กับว่าคุณใช้ JDK Launcher หรือ Launcher อื่น
รูปแบบเมื่อใช้ Launcher อื่นที่ไม่ใช่ JDK Launcher เริ่มต้น
การเปลี่ยนแปลงเอาต์พุต |
main_class
|
main() เพื่อใช้เป็นจุดแรกเข้า
หากกฎใช้ตัวเลือกนี้ก็ไม่จำเป็นต้องมีรายการ srcs=[...]
ดังนั้นด้วยแอตทริบิวต์นี้ เราสามารถทำให้ไฟล์ปฏิบัติการจากไลบรารี Java ที่มีอยู่แล้ว
มี main() เมธอดขึ้นไป
ค่าของแอตทริบิวต์นี้เป็นชื่อคลาส ไม่ใช่ไฟล์ต้นฉบับ ชั้นเรียนจะต้อง
พร้อมใช้งานขณะรันไทม์: อาจมีการคอมไพล์โดยกฎนี้ (จาก |
plugins
|
java_plugin ที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อใดก็ตามที่กฎนี้
ได้สร้างขึ้น ไลบรารีอาจรับค่าปลั๊กอินจากทรัพยากร Dependency ที่ใช้
exported_plugins แหล่งข้อมูล
ที่สร้างโดยปลั๊กอินจะรวมอยู่ใน jar ผลลัพธ์ของกฎนี้
|
resource_jars
|
|
resource_strip_prefix
|
หากระบุ คำนำหน้าเส้นทางนี้จะถูกตัดออกจากทุกไฟล์ใน |
runtime_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 ใดก็ตามโดยขึ้นอยู่กับไลบรารีนี้
ไฟล์ที่รวมอยู่ในที่นี้ต้องมีเฉพาะกฎที่เป็นเอกลักษณ์เท่านั้น ได้แก่ -dontnote, -dontwarn,
จะถือว่าไม่ส่งผล และกฎที่ขึ้นต้นด้วย -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 ที่
แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
Jar ที่สร้างโดยกฎ
ในทางตรงกันข้าม เป้าหมายในแอตทริบิวต์ |
srcs
|
ไฟล์ต้นฉบับประเภท
ไฟล์ต้นฉบับประเภท
กฎ: ในกรณีที่กฎ (โดยทั่วไปคือ
เราจำเป็นต้องใช้อาร์กิวเมนต์นี้เกือบทุกครั้ง ยกเว้นในกรณีที่
แอตทริบิวต์ |
data
|
data ที่
แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
เมื่อสร้าง |
resources
|
หากระบุทรัพยากร ทรัพยากรจะถูกรวมกลุ่มไว้ในโหลพร้อมกับ
ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
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 ด้วย ก็จะต้องแสดงรายการ C ในตัว
|
javacopts
|
ตัวเลือกคอมไพเลอร์เหล่านี้จะส่งไปยัง javac หลังตัวเลือกคอมไพเลอร์ส่วนกลาง |
neverlink
|
tools.jar สำหรับสิ่งต่างๆ
ในแบบ JDK มาตรฐาน
โปรดทราบว่า หากไลบรารีรันไทม์ต่างจากไลบรารีการคอมไพล์ คุณต้องตรวจสอบว่าไลบรารีดังกล่าว ต่างกันเฉพาะตำแหน่งที่ JLS ห้ามไม่ให้คอมไพเลอร์เป็นแบบ inline (และต้องระงับสำหรับ JLS เวอร์ชันในอนาคตทั้งหมด) |
plugins
|
java_plugin ที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อใดก็ตามที่กฎนี้
ได้สร้างขึ้น ไลบรารีอาจรับค่าปลั๊กอินจากทรัพยากร Dependency ที่ใช้
exported_plugins แหล่งข้อมูล
ที่สร้างโดยปลั๊กอินจะรวมอยู่ใน jar ผลลัพธ์ของกฎนี้
|
proguard_specs
|
android_binary ใดก็ตามโดยขึ้นอยู่กับไลบรารีนี้
ไฟล์ที่รวมอยู่ในที่นี้ต้องมีเฉพาะกฎที่เป็นเอกลักษณ์เท่านั้น ได้แก่ -dontnote, -dontwarn,
จะถือว่าไม่ส่งผล และกฎที่ขึ้นต้นด้วย -keep ตัวเลือกอื่นๆ จะปรากฏใน
Proguard_specs ของ android_binary เพื่อให้แน่ใจว่ามีการผสานแบบไม่อาศัยแบบโลจิคัล
|
resource_jars
|
|
resource_strip_prefix
|
หากระบุ คำนำหน้าเส้นทางนี้จะถูกตัดออกจากทุกไฟล์ใน |
runtime_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
|
หากระบุทรัพยากร ทรัพยากรจะถูกรวมกลุ่มไว้ในโหลพร้อมกับ
ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
classpath_resources
|
รายการทรัพยากรที่ต้องอยู่ที่รูทของ Java Tree ของแอตทริบิวต์นี้
วัตถุประสงค์เฉพาะคือการสนับสนุนไลบรารีของบุคคลที่สามที่จำเป็นต้องมีทรัพยากร
พบในคลาสพาธตรงกับ |
create_executable
|
launcher หรือ main_class
ได้รับการตั้งค่าแล้ว
|
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 ใดๆ ที่
จะใช้
สามารถระบุ Java Invocation API เป็นค่าสำหรับแอตทริบิวต์นี้ได้
โดยค่าเริ่มต้น Bazel จะใช้ JDK Launcher ปกติ (bin/java หรือ java.exe) แฟล็ก Bazel ที่เกี่ยวข้องของ โปรดทราบว่าระบบจะสร้างทรัพยากร Dependency ดั้งเดิม (C++, SWIG, JNI) ในรูปแบบอื่น ขึ้นอยู่กับว่าคุณใช้ JDK Launcher หรือ Launcher อื่น
รูปแบบเมื่อใช้ Launcher อื่นที่ไม่ใช่ JDK Launcher เริ่มต้น
การเปลี่ยนแปลงเอาต์พุต |
main_class
|
main() เพื่อใช้เป็นจุดแรกเข้า
หากกฎใช้ตัวเลือกนี้ก็ไม่จำเป็นต้องมีรายการ srcs=[...]
ดังนั้นด้วยแอตทริบิวต์นี้ เราสามารถทำให้ไฟล์ปฏิบัติการจากไลบรารี Java ที่มีอยู่แล้ว
มี main() เมธอดขึ้นไป
ค่าของแอตทริบิวต์นี้เป็นชื่อคลาส ไม่ใช่ไฟล์ต้นฉบับ ชั้นเรียนจะต้อง
พร้อมใช้งานขณะรันไทม์: อาจมีการคอมไพล์โดยกฎนี้ (จาก |
plugins
|
java_plugin ที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อใดก็ตามที่กฎนี้
ได้สร้างขึ้น ไลบรารีอาจรับค่าปลั๊กอินจากทรัพยากร Dependency ที่ใช้
exported_plugins แหล่งข้อมูล
ที่สร้างโดยปลั๊กอินจะรวมอยู่ใน jar ผลลัพธ์ของกฎนี้
|
resource_jars
|
|
resource_strip_prefix
|
หากระบุ คำนำหน้าเส้นทางนี้จะถูกตัดออกจากทุกไฟล์ใน |
runtime_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 ที่
แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
Jar ที่สร้างโดยกฎ
ในทางตรงกันข้าม เป้าหมายในแอตทริบิวต์ |
srcs
|
ไฟล์ต้นฉบับประเภท
ไฟล์ต้นฉบับประเภท
กฎ: ในกรณีที่กฎ (โดยทั่วไปคือ
เราจำเป็นต้องใช้อาร์กิวเมนต์นี้เกือบทุกครั้ง ยกเว้นในกรณีที่
แอตทริบิวต์ |
data
|
data ที่
แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
เมื่อสร้าง |
resources
|
หากระบุทรัพยากร ทรัพยากรจะถูกรวมกลุ่มไว้ในโหลพร้อมกับ
ทรัพยากรอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น |
generates_api
|
หากกฎใช้ตัวประมวลผลคำอธิบายประกอบที่สร้าง API กฎอื่นๆ อาจอ้างอิงโค้ดที่สร้างขึ้นเฉพาะในกรณีที่ ระบบจะกำหนดเวลาการดำเนินการคอมไพล์หลังจากกฎการสร้าง ช่วงเวลานี้ ทำให้ Bazel แนะนำข้อจำกัดการตั้งเวลาเมื่อ --java_header_compilation เปิดอยู่ คำเตือน: แอตทริบิวต์นี้ส่งผลต่อบิลด์ ให้ใช้ข้อมูลเมื่อจำเป็นเท่านั้น |
javacopts
|
ตัวเลือกคอมไพเลอร์เหล่านี้จะส่งไปยัง javac หลังตัวเลือกคอมไพเลอร์ส่วนกลาง |
neverlink
|
tools.jar สำหรับสิ่งต่างๆ
ในแบบ JDK มาตรฐาน
โปรดทราบว่า หากไลบรารีรันไทม์ต่างจากไลบรารีการคอมไพล์ คุณต้องตรวจสอบว่าไลบรารีดังกล่าว ต่างกันเฉพาะตำแหน่งที่ JLS ห้ามไม่ให้คอมไพเลอร์เป็นแบบ inline (และต้องระงับสำหรับ JLS เวอร์ชันในอนาคตทั้งหมด) |
output_licenses
|
common attributes
|
plugins
|
java_plugin ที่ระบุในแอตทริบิวต์นี้จะทำงานเมื่อใดก็ตามที่กฎนี้
ได้สร้างขึ้น ไลบรารีอาจรับค่าปลั๊กอินจากทรัพยากร Dependency ที่ใช้
exported_plugins แหล่งข้อมูล
ที่สร้างโดยปลั๊กอินจะรวมอยู่ใน jar ผลลัพธ์ของกฎนี้
|
processor_class
|
|
proguard_specs
|
android_binary ใดก็ตามโดยขึ้นอยู่กับไลบรารีนี้
ไฟล์ที่รวมอยู่ในที่นี้ต้องมีเฉพาะกฎที่เป็นเอกลักษณ์เท่านั้น ได้แก่ -dontnote, -dontwarn,
จะถือว่าไม่ส่งผล และกฎที่ขึ้นต้นด้วย -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, 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
|
|
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
|
|