คําสั่ง mod มีเครื่องมือมากมายที่จะช่วยให้ผู้ใช้เข้าใจกราฟทรัพยากร Dependency ภายนอก โดยจะช่วยให้คุณเห็นภาพกราฟทรัพยากร Dependency ทราบว่าเหตุใดโมดูลหรือเวอร์ชันหนึ่งๆ ของโมดูลจึงปรากฏในกราฟ ดูคําจํากัดความของที่เก็บข้อมูลที่สนับสนุนโมดูล ตรวจสอบการใช้งานส่วนขยายของโมดูลและที่เก็บข้อมูลที่ส่วนขยายสร้างขึ้น รวมถึงฟังก์ชันอื่นๆ
ไวยากรณ์
bazel mod <subcommand> [<options>] [<arg> [<arg>...]]
คําสั่งย่อยที่ใช้ได้และอาร์กิวเมนต์ที่ต้องระบุของคําสั่งย่อยเหล่านั้นมีดังนี้
graph: แสดงกราฟทรัพยากร Dependency แบบเต็มของโปรเจ็กต์ โดยเริ่มจากโมดูลราก หากมีการระบุโมดูลอย่างน้อย 1 รายการใน--fromระบบจะแสดงโมดูลเหล่านี้ใต้รูทโดยตรง และจะขยายกราฟจากโมดูลเหล่านี้เท่านั้น (ดูตัวอย่าง)deps <arg>...: แสดงทรัพยากร Dependency โดยตรงที่แก้ไขแล้วของโมดูลที่ ระบุแต่ละโมดูล ซึ่งคล้ายกับgraphall_paths <arg>...: แสดงเส้นทางทรัพยากร Dependency ทั้งหมดจากโมดูล --from ไปยังโมดูลเป้าหมาย เพื่อลดความซับซ้อนของเอาต์พุต ระบบจะแสดงเฉพาะเส้นทางที่สั้นที่สุดเส้นทางแรกเมื่อหลายเส้นทางมีคำต่อท้ายเหมือนกัน ตัวอย่างเช่น ระบบจะแสดง A -> B -> X แต่จะละเว้น A -> C -> B -> X ที่ยาวกว่า กล่าวอีกนัยหนึ่งคือ สําหรับโมดูล Y ทุกโมดูลที่ขึ้นอยู่กับโมดูลเป้าหมาย X โดยตรง เอาต์พุตจะมีเฉพาะเส้นทางที่สั้นที่สุดที่ผ่าน Y เพื่อไปยัง Xpath <arg>...: มีความหมายเหมือนกับall_pathsแต่จะแสดงเฉพาะเส้นทางเดียวจากโมดูล--fromโมดูลใดโมดูลหนึ่งไปยังโมดูลอาร์กิวเมนต์โมดูลใดโมดูลหนึ่งexplain <arg>...: แสดงทุกที่ที่โมดูลที่ระบุปรากฏ ในกราฟทรัพยากร Dependency พร้อมกับโมดูลที่ขึ้นอยู่กับโมดูลเหล่านั้นโดยตรง เอาต์พุตของคําสั่งexplainเป็นเวอร์ชันที่ตัดทอนของ คําสั่งall_pathsซึ่งประกอบด้วย 1) โมดูลราก 2) ทรัพยากร Dependency โดยตรงของโมดูลรากที่นําไปสู่โมดูลอาร์กิวเมนต์ 3) โมดูลที่ขึ้นอยู่กับโมดูลอาร์กิวเมนต์โดยตรง และ 4) โมดูลอาร์กิวเมนต์เอง (ดูตัวอย่าง)show_repo <arg>...: แสดงคําจํากัดความของที่เก็บข้อมูลที่ระบุ (ดู ตัวอย่าง) ใช้--all_reposเพื่อแสดงคําจํากัดความของที่เก็บข้อมูลทั้งหมดในกราฟทรัพยากร Dependency ทั้งหมด หรือ--all_visible_reposเพื่อแสดงคําจํากัดความของที่เก็บข้อมูลทั้งหมดที่มองเห็นได้จาก--base_moduleshow_extension <extension>...: แสดงข้อมูลเกี่ยวกับส่วนขยายที่ระบุแต่ละรายการ ได้แก่ รายการที่เก็บข้อมูลที่สร้างขึ้นพร้อมกับโมดูลที่นําเข้าที่เก็บข้อมูลเหล่านั้นโดยใช้use_repoและรายการการใช้งานส่วนขยายนั้นในแต่ละโมดูลที่ใช้ส่วนขยายดังกล่าว ซึ่งมีแท็กที่ระบุและการเรียกuse_repo(ดูตัวอย่าง)
<arg> หมายถึงโมดูลหรือที่เก็บข้อมูลอย่างน้อย 1 รายการ ซึ่งอาจเป็นค่าใดค่าหนึ่งต่อไปนี้
สตริงตัวอักษร
<root>: โมดูลรากที่แสดงโปรเจ็กต์ปัจจุบัน<name>@<version>: โมดูล<name>ที่เวอร์ชัน<version>สําหรับโมดูล ที่มีการลบล้างที่ไม่ใช่รีจิสทรี ให้ใช้ขีดล่าง (_) เป็น<version><name>: โมดูล<name>ทุกเวอร์ชันที่แสดง@<repo_name>: ที่เก็บข้อมูลที่มีชื่อที่ปรากฏในบริบทของ--base_module@@<repo_name>: ที่เก็บข้อมูลที่มีชื่อ Canonical ที่ระบุ
ในบริบทที่ต้องระบุโมดูล คุณยังใช้ <arg> ที่อ้างอิงที่เก็บข้อมูลที่
สอดคล้องกับโมดูล (เทียบกับที่เก็บข้อมูลที่ส่วนขยายสร้างขึ้น) ได้ด้วย
ในทางกลับกัน ในบริบทที่ต้องระบุที่เก็บข้อมูล <arg> ที่อ้างอิงถึง
โมดูลสามารถใช้แทนที่เก็บข้อมูลที่เกี่ยวข้องได้
<extension> ต้องอยู่ในรูปแบบ <arg><label_to_bzl_file>%<extension_name>
ส่วน <label_to_bzl_file> ต้องเป็นป้ายกำกับที่สัมพันธ์กับที่เก็บข้อมูล (เช่น
//pkg/path:file.bzl)
ตัวเลือกคําสั่งกราฟ
ตัวเลือกต่อไปนี้จะส่งผลต่อคําสั่งย่อยที่พิมพ์กราฟ (graph,
deps, all_paths, path และ explain) เท่านั้น
--from <arg>[,<arg>[,...]]ค่าเริ่มต้น:<root>: โมดูลที่ขยายกราฟในgraph,all_paths,path, และexplainโปรดดูรายละเอียดเพิ่มเติมในคําอธิบายของคําสั่งย่อย--verboseค่าเริ่มต้น: "false": รวมข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขเวอร์ชันของแต่ละโมดูลไว้ในกราฟเอาต์พุต หากเวอร์ชันของโมดูล มีการเปลี่ยนแปลงระหว่างการแก้ไข ให้แสดงเวอร์ชันที่แทนที่หรือ เวอร์ชันเดิม เหตุผลที่แทนที่ และโมดูลใดที่ ขอเวอร์ชันใหม่หากเหตุผลคือ การเลือกเวอร์ชัน ขั้นต่ำ--include_unusedค่าเริ่มต้น: "false": รวมโมดูลที่เดิมปรากฏในกราฟทรัพยากร Dependency แต่ไม่ได้ใช้แล้วหลังจากการแก้ไขโมดูลไว้ในกราฟเอาต์พุต--extension_info <mode>: รวมข้อมูลเกี่ยวกับการใช้งานส่วนขยายของโมดูล ไว้ในกราฟเอาต์พุต (ดูตัวอย่าง)<mode>อาจเป็นค่าใดค่าหนึ่งต่อไปนี้hidden(ค่าเริ่มต้น): ไม่แสดงข้อมูลเกี่ยวกับส่วนขยายusages: แสดงส่วนขยายใต้แต่ละโมดูลที่ใช้ส่วนขยายนั้น โดยจะพิมพ์ในรูปแบบ$<extension>repos: นอกเหนือจากusagesแล้ว ให้แสดงที่เก็บข้อมูลที่นําเข้าโดยใช้use_repoใต้การใช้งานส่วนขยายแต่ละรายการall: นอกเหนือจากusagesและreposแล้ว ให้แสดงที่เก็บข้อมูลที่ส่วนขยายสร้างขึ้นซึ่งไม่มีโมดูลใดนำเข้าด้วย ที่เก็บข้อมูลเพิ่มเติมเหล่านี้จะแสดงใต้ส่วนขยายที่สร้างที่เก็บข้อมูลเหล่านั้นขึ้นมาเป็นครั้งแรกในเอาต์พุต และเชื่อมต่อด้วยเส้นประ
--extension_filter <extension>[,<extension>[,...]]: หากระบุไว้ กราฟเอาต์พุตจะมีเฉพาะโมดูลที่ใช้ส่วนขยายที่ระบุและเส้นทางที่นําไปสู่โมดูลเหล่านั้น การระบุรายการส่วนขยายที่ว่างเปล่า (เช่น--extension_filter=) จะเทียบเท่ากับการระบุส่วนขยาย ทั้งหมด ที่โมดูลใดโมดูลหนึ่งในกราฟทรัพยากร Dependency ใช้--depth <N>: ความลึกของกราฟเอาต์พุต ความลึก 1 จะแสดงเฉพาะรากและทรัพยากร Dependency โดยตรง ค่าเริ่มต้นคือ 1 สําหรับexplain, 2 สําหรับdepsและอนันต์สําหรับคําสั่งอื่นๆ--cyclesค่าเริ่มต้น: "false": รวมขอบวงจรไว้ในกราฟเอาต์พุต--include_builtinค่าเริ่มต้น: "false": รวมโมดูลในตัว (เช่น@bazel_tools) ไว้ในกราฟเอาต์พุต แฟล็กนี้จะปิดใช้อยู่โดยค่าเริ่มต้น เนื่องจากโมดูลในตัวขึ้นอยู่กับโมดูลอื่นๆ โดยนัย ซึ่งจะทําให้เอาต์พุตซับซ้อนมาก--charset <charset>ค่าเริ่มต้น: utf8: ระบุชุดอักขระที่จะใช้สําหรับเอาต์พุตข้อความ ค่าที่ใช้ได้คือ"utf8"และ"ascii"ความแตกต่างที่สําคัญเพียงอย่างเดียว คืออักขระพิเศษที่ใช้ในการวาดกราฟในรูปแบบเอาต์พุต"text"ซึ่งไม่มีอยู่ในชุดอักขระ"ascii"ดังนั้น ชุดอักขระ"ascii"จึงมีไว้เพื่อรองรับการใช้งานใน แพลตฟอร์มเดิมที่ไม่สามารถใช้ Unicode ได้ด้วย--output <mode>: รวมข้อมูลเกี่ยวกับการใช้งานส่วนขยายของโมดูลไว้เป็น ส่วนหนึ่งของกราฟเอาต์พุต<mode>อาจเป็นค่าใดค่าหนึ่งต่อไปนี้text(ค่าเริ่มต้น): การแสดงกราฟเอาต์พุตในรูปแบบที่มนุษย์อ่านได้ (แบนเป็นแผนผัง)json: แสดงกราฟในรูปแบบออบเจ็กต์ JSON (แบนเป็นแผนผัง)graph: แสดงกราฟในรูปแบบ dot ของ Graphviz
bazel mod graph --output graph | dot -Tsvg > /tmp/graph.svg
ตัวเลือก show_repo
show_repo รองรับรูปแบบเอาต์พุตที่แตกต่างกันดังนี้
--output <mode>: เปลี่ยนวิธีแสดงคําจํากัดความของที่เก็บข้อมูล<mode>อาจเป็นค่าใดค่าหนึ่งต่อไปนี้text(ค่าเริ่มต้น): แสดงคําจํากัดความของที่เก็บข้อมูลใน Starlarkstreamed_proto: พิมพ์สตรีมบัฟเฟอร์โปรโตคอล ที่คั่นด้วยความยาว ของRepositorystreamed_jsonproto: คล้ายกับ--output streamed_protoโดยจะพิมพ์สตรีมบัฟเฟอร์โปรโตคอลRepositoryแต่ในรูปแบบ NDJSON
ตัวเลือกอื่นๆ
ตัวเลือกอื่นๆ ได้แก่
--base_module <arg>ค่าเริ่มต้น:<root>: ระบุโมดูลที่สัมพันธ์กับ โมดูลที่จะใช้ตีความชื่อที่เก็บข้อมูลที่ปรากฏในอาร์กิวเมนต์ โปรดทราบว่าอาร์กิวเมนต์นี้เองอาจอยู่ในรูปแบบ@<repo_name>ซึ่งจะตีความเทียบกับโมดูลรากเสมอ--extension_usages <arg>[,<arg>[,...]]: กรองshow_extensionเพื่อแสดงเฉพาะการใช้งานส่วนขยายจากโมดูลที่ระบุ
ตัวอย่าง
ตัวอย่างการใช้งานคําสั่ง mod ที่เป็นไปได้ในโปรเจ็กต์ Bazel จริงแสดงไว้ด้านล่างเพื่อให้คุณเห็นภาพคร่าวๆ เกี่ยวกับวิธีใช้คําสั่งนี้เพื่อตรวจสอบทรัพยากร Dependency ภายนอกของโปรเจ็กต์
ไฟล์ MODULE.bazel:
module(
name = "my_project",
version = "1.0",
)
bazel_dep(name = "bazel_skylib", version = "1.1.1", repo_name = "skylib1")
bazel_dep(name = "bazel_skylib", version = "1.2.0", repo_name = "skylib2")
multiple_version_override(module_name = "bazel_skylib", versions = ["1.1.1", "1.2.0"])
bazel_dep(name = "stardoc", version = "0.5.0")
bazel_dep(name = "rules_java", version = "5.0.0")
toolchains = use_extension("@rules_java//java:extensions.bzl", "toolchains")
use_repo(toolchains, my_jdk="remotejdk17_linux")
|
|
|
แสดงกราฟทรัพยากร Dependency ทั้งหมดของโปรเจ็กต์
bazel mod graph<root> (my_project@1.0) ├───bazel_skylib@1.1.1 │ └───platforms@0.0.4 ├───bazel_skylib@1.2.0 │ └───platforms@0.0.4 ... ├───rules_java@5.0.0 │ ├───platforms@0.0.4 ... │ ├───rules_cc@0.0.1 │ │ ├───bazel_skylib@1.1.1 ... │ │ └───platforms@0.0.4 ... │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.1.1 ... │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 ├───bazel_skylib@1.1.1 ... └───rules_java@5.0.0 ...แสดงกราฟทรัพยากร Dependency ทั้งหมด (รวมถึงโมดูลที่ไม่ได้ใช้และข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขเวอร์ชัน)
bazel mod graph --include_unused --verbose<root> (my_project@1.0) ├───bazel_skylib@1.1.1 │ └───platforms@0.0.4 ├───bazel_skylib@1.2.0 │ └───platforms@0.0.4 ... ├───rules_java@5.0.0 │ ├───platforms@0.0.4 ... │ ├───rules_cc@0.0.1 │ │ ├───bazel_skylib@1.0.3 ... (to 1.1.1, cause multiple_version_override) │ │ ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ │ └───platforms@0.0.4 ... │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.0.3 ... (to 1.1.1, cause multiple_version_override) │ ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) ├───rules_java@5.0.0 ... (was 4.0.0, cause <root>, bazel_tools@_) ├───bazel_skylib@1.0.3 (to 1.1.1, cause multiple_version_override) │ └───platforms@0.0.4 ... └───rules_java@4.0.0 (to 5.0.0, cause <root>, bazel_tools@_) ├───bazel_skylib@1.0.3 ... (to 1.1.1, cause multiple_version_override) └───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override)แสดงกราฟทรัพยากร Dependency ที่ขยายจากโมดูลที่เฉพาะเจาะจง
bazel mod graph --from rules_java --include_unused<root> (my_project@1.0) ├───rules_java@5.0.0 │ ├───platforms@0.0.4 │ ├───rules_cc@0.0.1 │ │ ├───bazel_skylib@1.0.3 ... (unused) │ │ ├───bazel_skylib@1.1.1 ... │ │ └───platforms@0.0.4 ... │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.0.3 ... (unused) │ ├───bazel_skylib@1.1.1 ... │ └───rules_cc@0.0.1 ... └╌╌rules_java@4.0.0 (unused) ├───bazel_skylib@1.0.3 (unused) │ └───platforms@0.0.4 ... └───bazel_skylib@1.1.1 └───platforms@0.0.4 ...แสดงเส้นทางทั้งหมดระหว่างโมดูล 2 โมดูล
bazel mod all_paths bazel_skylib@1.1.1 --from rules_proto<root> (my_project@1.0) └╌╌rules_proto@4.0.0 ├───bazel_skylib@1.1.1 └───rules_cc@0.0.1 └───bazel_skylib@1.1.1 ...ดูเหตุผลและวิธีที่โปรเจ็กต์ขึ้นอยู่กับโมดูลอย่างน้อย 1 โมดูล
bazel mod explain @skylib1 --verbose --include_unused<root> (my_project@1.0) ├───bazel_skylib@1.1.1 ├───rules_java@5.0.0 │ ├───rules_cc@0.0.1 │ │ └───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) ├╌╌rules_cc@0.0.1 │ └───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) └╌╌rules_proto@4.0.0 ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) └───rules_cc@0.0.1 ...ดูกฎพื้นฐานของที่เก็บข้อมูลของโมดูล
bazel mod show_repo rules_cc stardoc## rules_cc@0.0.1: load("@@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "rules_cc+", urls = ["https://bcr.bazel.build/test-mirror/github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz", "https://github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz"], integrity = "sha256-Tcy/0iwN7xZMj0dFi9UODHFI89kgAs20WcKpamhJgkE=", strip_prefix = "", remote_patches = {"https://bcr.bazel.build/modules/rules_cc/0.0.1/patches/add_module_extension.patch": "sha256-g3+zmGs0YT2HKOVevZpN0Jet89Ylw90Cp9XsIAY8QqU="}, remote_patch_strip = 1, ) ## stardoc: load("@@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "stardoc+", urls = ["https://bcr.bazel.build/test-mirror/github.com/bazelbuild/stardoc/releases/download/0.5.0/stardoc-0.5.0.tar.gz", "https://github.com/bazelbuild/stardoc/releases/download/0.5.0/stardoc-0.5.0.tar.gz"], integrity = "sha256-yXlNzIAmow/2fPfPkeviRcopSyCwcYRdEsGSr+JDrXI=", strip_prefix = "", remote_patches = {}, remote_patch_strip = 0, )bazel mod show_repoยังใช้ได้กับที่เก็บข้อมูลที่นําเข้าโดยuse_repoและที่เก็บข้อมูล ที่สร้างด้วยuse_repo_ruleหากเรียกใช้show_repoด้วยชื่อที่เก็บข้อมูลที่ปรากฏหรือ--all_visible_reposระบบจะแสดงชื่อที่เก็บข้อมูลที่ปรากฏในบรรทัดที่ขึ้นต้นด้วย##bazel mod show_repo @jq_linux_arm64 bazel mod show_repo --all_visible_repos## @jq_linux_arm64: load("@@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") http_file( name = "+http_file+jq_linux_arm64", executable = True, integrity = "sha256-TdLYoGYd8LIvG7mh+YMPBrbzuPfZEhGh7118TwaotKU=", urls = ["https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-arm64"], )ดูส่วนขยายของโมดูลที่ใช้ในกราฟทรัพยากร Dependency
bazel mod graph --extension_info=usages<root> (my_project@1.0) ├───$@@rules_java.5.0.0//java:extensions.bzl%toolchains ├───rules_java@5.0.0 # │ ├───$@@rules_java.5.0.0//java:extensions.bzl%toolchains │ ├───rules_cc@0.0.1 # │ │ └───$@@rules_cc.0.0.1//bzlmod:extensions.bzl%cc_configure │ └───rules_proto@4.0.0 │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 └───rules_java@5.0.0 ...ดูที่เก็บข้อมูลที่สร้างและนําเข้าจากส่วนขยายที่เฉพาะเจาะจงเป็นส่วนหนึ่งของกราฟทรัพยากร Dependency
bazel mod show_extension @@rules_java+5.0.0//java:extensions.bzl%toolchains<root> (my_project@1.0) ├───$@@rules_java.5.0.0//java:extensions.bzl%toolchains │ ├───remotejdk17_linux │ ├╌╌remotejdk11_linux │ ├╌╌remotejdk11_linux_aarch64 │ ├╌╌remotejdk11_linux_ppc64le │ ├╌╌remotejdk11_linux_s390x ...(some lines omitted)... ├───rules_java@5.0.0 # │ └───$@@rules_java.5.0.0//java:extensions.bzl%toolchains ... │ ├───local_jdk │ ├───remote_java_tools │ ├───remote_java_tools_darwin │ ├───remote_java_tools_linux │ ├───remote_java_tools_windows │ ├───remotejdk11_linux_aarch64_toolchain_config_repo │ ├───remotejdk11_linux_ppc64le_toolchain_config_repo ...(some lines omitted)... └───stardoc@0.5.0 └───rules_java@5.0.0 ...ดูรายการที่เก็บข้อมูลที่สร้างขึ้นของส่วนขยายและวิธีใช้ส่วนขยายนั้นในแต่ละโมดูล
bazel mod graph --extension_info=all --extension_filter=@rules_java//java:extensions.bzl%toolchains## @@rules_java.5.0.0//java:extensions.bzl%toolchains: Fetched repositories: - local_jdk (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools_darwin (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools_linux (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools_windows (imported by bazel_tools@_, rules_java@5.0.0) - remotejdk11_linux_aarch64_toolchain_config_repo (imported by rules_java@5.0.0) - remotejdk11_linux_ppc64le_toolchain_config_repo (imported by rules_java@5.0.0) ...(some lines omitted)... - remotejdk17_linux (imported by <root>) - remotejdk11_linux - remotejdk11_linux_aarch64 - remotejdk11_linux_ppc64le - remotejdk11_linux_s390x - remotejdk11_macos ...(some lines omitted)... # Usage in <root> at <root>/MODULE.bazel:14:27 with the specified attributes: use_repo( toolchains, my_jdk="remotejdk17_linux", ) # Usage in bazel_tools@_ at bazel_tools@_/MODULE.bazel:23:32 with the specified attributes: use_repo( toolchains, "local_jdk", "remote_java_tools", "remote_java_tools_linux", "remote_java_tools_windows", "remote_java_tools_darwin", ) # Usage in rules_java@5.0.0 at rules_java@5.0.0/MODULE.bazel:30:27 with the specified attributes: use_repo( toolchains, "remote_java_tools", "remote_java_tools_linux", "remote_java_tools_windows", "remote_java_tools_darwin", "local_jdk", "remotejdk11_linux_toolchain_config_repo", "remotejdk11_macos_toolchain_config_repo", "remotejdk11_macos_aarch64_toolchain_config_repo", ...(some lines omitted)... )ดูกฎพื้นฐานของที่เก็บข้อมูลที่ส่วนขยายสร้างขึ้น
bazel mod show_repo --base_module=rules_java @remote_java_tools## @remote_java_tools: # <builtin> http_archive( name = "rules_java++toolchains+remote_java_tools", urls = ["https://mirror.bazel.build/bazel_java_tools/releases/java/v11.5/java_tools-v11.5.zip", "https://github.com/bazelbuild/java_tools/releases/download/java_v11.5/java_tools-v11.5.zip"], sha256 = "b763ee80e5754e593fd6d5be6d7343f905bc8b73d661d36d842b024ca11b6793", ) # Rule http_archive defined at (most recent call last): # /home/user/.cache/bazel/_bazel_user/6e893e0f5a92cc4cf5909a6e4b2770f9/external/bazel_tools/tools/build_defs/repo/http.bzl:355:31 in <toplevel>