Khai báo gói (package)
package(default_deprecation, default_package_metadata, default_testonly, default_visibility, features)
Hàm package()
khai báo siêu dữ liệu áp dụng cho tất cả các quy tắc trong một gói, thường được sử dụng một lần duy nhất trong mỗi tệp BUILD
. Nó giúp định nghĩa các thuộc tính mặc định như mức độ hiển thị, giấy phép, và trạng thái thử nghiệm cho các quy tắc trong gói. Việc sử dụng package()
giúp giảm thiểu sự trùng lặp và đảm bảo tính nhất quán trong cấu hình bản dựng.
Ảnh minh họa hàm package
trong Bazel, giúp thiết lập các thuộc tính mặc định cho các quy tắc trong một gói, đảm bảo tính nhất quán trong dự án.
Nhóm gói (package_group)
package_group(name, packages, includes)
Hàm package_group()
định nghĩa một tập hợp các gói và liên kết nó với một nhãn, thường được sử dụng để kiểm soát mức độ hiển thị. Nó cho phép bạn tạo ra các nhóm logic của các gói và cấp quyền truy cập một cách có chọn lọc, tăng cường tính bảo mật và khả năng bảo trì của dự án.
Sơ đồ minh họa cách nhóm các gói trong Bazel để quản lý quyền truy cập và kiểm soát mức độ hiển thị giữa các thành phần, giúp bảo vệ các phần quan trọng của dự án.
Xuất tệp (exports_files)
exports_files([<i>label</i>, ...], visibility, licenses)
exports_files()
cho phép bạn chỉ định danh sách các tệp trong gói hiện tại có thể được truy cập bởi các gói khác. Điều này rất quan trọng để chia sẻ các tệp nguồn hoặc tài nguyên giữa các thành phần khác nhau của dự án, đảm bảo tính tái sử dụng và giảm sự trùng lặp.
Tìm kiếm tệp (glob)
glob(include, exclude=[], exclude_directories=1, allow_empty=True)
glob()
là một hàm mạnh mẽ để tìm kiếm các tệp khớp với một hoặc nhiều mẫu đường dẫn. Nó trả về một danh sách các đường dẫn, rất hữu ích khi bạn cần xử lý hàng loạt tệp dựa trên một quy tắc chung. Ví dụ, bạn có thể sử dụng glob()
để biên dịch tất cả các tệp .java
trong một thư mục.
Biểu đồ minh họa quá trình sử dụng hàm glob
để tìm kiếm và chọn các tệp theo mẫu định sẵn trong Bazel, tự động hóa việc thêm tệp vào quá trình xây dựng.
Chọn cấu hình (select)
select( {conditionA: valuesA, conditionB: valuesB, ...}, no_match_error = "custom message" )
select()
cho phép các thuộc tính quy tắc có thể định cấu hình, nghĩa là giá trị của một thuộc tính có thể thay đổi dựa trên các cờ dòng lệnh hoặc cấu hình bản dựng. Điều này rất hữu ích để tạo các bản dựng khác nhau cho các nền tảng khác nhau hoặc cho các mục đích khác nhau (ví dụ: gỡ lỗi vs. phát hành).
Gói con (subpackages)
subpackages(include, exclude=[], allow_empty=True)
Tương tự như glob()
, subpackages()
liệt kê các gói con trực tiếp của gói hiện tại. Nó sử dụng các mẫu đường dẫn tương tự và trả về một danh sách các gói con đã sắp xếp. Hàm này giúp bạn quản lý các dự án lớn với cấu trúc thư mục phức tạp.