Quy tắc kho lưu trữ http

Bạn có thể tải các hàm sau đây từ @bazel_tools//tools/build_defs/repo:http.bzl.

Quy tắc tải tệp và bản lưu trữ xuống qua HTTP.

Thiết lập

Để sử dụng các quy tắc này, hãy tải chúng trong tệp WORKSPACE như sau:

load(
    "@bazel_tools//tools/build_defs/repo:http.bzl",
    "http_archive",
    "http_file",
    "http_jar",
)

Các quy tắc này là phiên bản cải tiến của quy tắc http gốc và cuối cùng sẽ thay thế các quy tắc gốc.

http_archive

http_archive(name, add_prefix, auth_patterns, build_file, build_file_content, canonical_id,
             integrity, netrc, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches,
             remote_patch_strip, remote_patches, repo_mapping, sha256, strip_prefix, type, url, urls,
             workspace_file, workspace_file_content)

Tải kho lưu trữ Bazel xuống dưới dạng tệp lưu trữ nén, giải nén tệp này và cung cấp các mục tiêu sẵn có để liên kết.

Tệp này hỗ trợ các đuôi tệp sau: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar" hoặc "deb".

Ví dụ: Giả sử kho lưu trữ hiện tại chứa mã nguồn của một chương trình trò chuyện, đã bị can thiệp vào hệ thống tại thư mục ~/chat-app. Việc này cần phải phụ thuộc vào thư viện SSL có sẵn tại http://example.com/openSSL.zip. Tệp .zip này chứa cấu trúc thư mục sau:

  WORKSPACE
  src/
    openssl.cc
    openssl.h

Trong kho lưu trữ cục bộ, người dùng tạo một tệp openssl.BUILD chứa định nghĩa mục tiêu sau:

  cc_library(
      name = "openssl-lib",
      srcs = ["src/openssl.cc"],
      hdrs = ["src/openssl.h"],
  )

Các mục tiêu trong kho lưu trữ ~/chat-app có thể phụ thuộc vào mục tiêu này nếu bạn thêm các dòng sau vào ~/chat-app/WORKSPACE:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

  http_archive(
      name = "my_ssl",
      url = "http://example.com/openssl.zip",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      build_file = "@//:openssl.BUILD",
  )

Sau đó, các mục tiêu sẽ chỉ định @my_ssl//:openssl-lib làm phần phụ thuộc.

Thuộc tính

name Tên; bắt buộc

Tên dành riêng cho kho lưu trữ này.

add_prefix Chuỗi; không bắt buộc

Thư mục đích đến tương ứng với thư mục kho lưu trữ. Tệp lưu trữ sẽ được giải nén vào thư mục này, sau khi áp dụng "strip_prefix" (nếu có) cho các đường dẫn tệp trong kho lưu trữ. Ví dụ: tệp "foo-1.2.3/src/foo.h" sẽ được giải nén thành "bar/src/foo.h" nếu "add_prefix = "bar"" và "strip_prefix = "foo-1.2.3"".

auth_patterns Từ điển: Chuỗi -> Chuỗi; không bắt buộc

Tên máy chủ ánh xạ chính tả (không bắt buộc) đến các mẫu uỷ quyền tuỳ chỉnh. Nếu tên máy chủ của URL có trong lệnh này, thì giá trị sẽ được dùng làm mẫu khi tạo tiêu đề uỷ quyền cho yêu cầu http. Điều này cho phép sử dụng các giao thức uỷ quyền tuỳ chỉnh được dùng trong nhiều nhà cung cấp bộ nhớ trên đám mây phổ biến. Mẫu này hiện hỗ trợ 2 mã thông báo: <login><password>, được thay thế bằng giá trị tương đương trong tệp netrc cho cùng một tên máy chủ. Sau khi định dạng, kết quả được đặt làm giá trị cho trường Authorization của yêu cầu HTTP. Ví dụ về thuộc tính và netrc để tải http xuống API có bật OAuth2 bằng mã thông báo truy cập:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Yêu cầu HTTP cuối cùng sẽ có tiêu đề sau:
Authorization: Bearer RANDOM-TOKEN

build_file Nhãn; không bắt buộc

Tệp cần sử dụng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là một nhãn tuyệt đối (sử dụng '@//' cho kho lưu trữ chính). Tệp không cần phải được đặt tên là BUILD nhưng có thể là (tên như BUILD.new-repo-name có thể hoạt động tốt để phân biệt tệp này với các tệp BUILD thực tế của kho lưu trữ. Bạn có thể chỉ định build_file hoặc build_file_content, nhưng không thể chỉ định cả hai.

build_file_content Chuỗi; không bắt buộc

Nội dung của tệp BUILD trong kho lưu trữ này. Bạn có thể chỉ định build_file hoặc build_file_content, nhưng không thể chỉ định cả hai.

canonical_id Chuỗi; không bắt buộc

Mã chính tắc của tệp được tải xuống. Nếu được chỉ định và không trống, Bazel sẽ không lấy tệp từ bộ nhớ đệm, trừ phi tệp đó được thêm vào bộ nhớ đệm thông qua một yêu cầu có cùng mã chính tắc. Nếu không chỉ định hoặc để trống, Bazel theo mặc định sẽ sử dụng URL của tệp làm mã nhận dạng chính tắc. Điều này giúp phát hiện lỗi phổ biến khi cập nhật URL mà không cập nhật hàm băm, dẫn đến việc các bản dựng thành công cục bộ nhưng không hoạt động trên máy nếu không có tệp trong bộ nhớ đệm. Bạn có thể vô hiệu hoá hành vi này bằng --repo_env=BAZEL_HTTP_RULES_URL_AS_DEFAULT_CANONICAL_ID=0.

integrity Chuỗi; không bắt buộc

Giá trị tổng kiểm dự kiến ở định dạng Tính toàn vẹn của tài nguyên phụ của tệp được tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp được tải xuống. _Nếu bạn bỏ qua giá trị tổng kiểm vì các tệp từ xa có thể thay đổi, thì bạn sẽ gặp rủi ro bảo mật. Nếu bạn bỏ qua trường này, bản dựng sẽ không bị ẩn. Bạn không bắt buộc phải làm cho quá trình phát triển dễ dàng hơn, nhưng bạn phải đặt thuộc tính này hoặc "sha256" trước khi vận chuyển.

netrc Chuỗi; không bắt buộc

Vị trí của tệp .netrc cần dùng để xác thực

patch_args Danh sách chuỗi; không bắt buộc

Các đối số được cung cấp cho công cụ vá. Mặc định là -p0, tuy nhiên -p1 thường sẽ cần thiết cho các bản vá do git tạo. Nếu bạn chỉ định nhiều đối số -p, thì đối số cuối cùng sẽ có hiệu lực.Nếu bạn chỉ định các đối số khác -p, Bazel sẽ quay lại sử dụng công cụ dòng lệnh vá thay vì triển khai bản vá gốc Bazel. Khi quay lại công cụ dòng lệnh vá và thuộc tính patch_tool không được chỉ định, "patch" (bản vá) sẽ được sử dụng. Điều này chỉ ảnh hưởng đến các tệp bản vá trong thuộc tính "patches".

patch_cmds Danh sách chuỗi; không bắt buộc

Áp dụng trình tự các lệnh Bash trên Linux/Macos sau khi áp dụng các bản vá.

patch_cmds_win Danh sách chuỗi; không bắt buộc

Trình tự các lệnh Powershell sẽ được áp dụng trên Windows sau khi áp dụng các bản vá. Nếu bạn không đặt thuộc tính này, patch_cmds sẽ được thực thi trên Windows và cần phải có tệp nhị phân Bash.

patch_tool Chuỗi; không bắt buộc

Tiện ích bản vá(1) để sử dụng. Nếu bạn chỉ định điều này, Bazel sẽ sử dụng công cụ vá được chỉ định thay vì triển khai bản vá gốc Bazel.

patches Danh sách nhãn; không bắt buộc

Danh sách các tệp được áp dụng làm bản vá sau khi giải nén bản lưu trữ. Theo mặc định, công cụ này sử dụng phương thức triển khai bản vá gốc Bazel không hỗ trợ so khớp mờ và bản vá nhị phân, nhưng Bazel sẽ quay lại sử dụng công cụ dòng lệnh vá nếu thuộc tính "patch_tool" được chỉ định hoặc có các đối số khác "-p" trong thuộc tính "patch_args".

remote_patch_strip Số nguyên; không bắt buộc

Số dấu gạch chéo ở đầu cần xoá khỏi tên tệp trong bản vá từ xa.

remote_patches Từ điển: Chuỗi -> Chuỗi; không bắt buộc

Bản đồ URL của tệp bản vá đến giá trị tính toàn vẹn của tệp. Các URL này được áp dụng sau khi trích xuất tệp lưu trữ và trước khi áp dụng các tệp bản vá từ thuộc tính "patches". Tiện ích này sử dụng phương thức triển khai bản vá gốc Bazel, bạn có thể chỉ định số của dải bản vá bằng "remote_patch_strip"

repo_mapping Từ điển: Chuỗi -> Chuỗi; bắt buộc

Từ điển, từ tên kho lưu trữ cục bộ đến tên kho lưu trữ toàn cục. Nhờ vậy, bạn có thể kiểm soát việc phân giải phần phụ thuộc không gian làm việc cho các phần phụ thuộc của kho lưu trữ này.

Ví dụ: một mục `"@foo": "@bar"` khai báo rằng, bất cứ lúc nào kho lưu trữ này phụ thuộc vào `@foo` (chẳng hạn như phần phụ thuộc trên `@foo//some:target`), thì nó thực sự sẽ giải quyết phần phụ thuộc đó trong `@bar` được khai báo toàn cục trong `@bar//some:target`).

sha256 Chuỗi; không bắt buộc

SHA-256 dự kiến của tệp đã tải xuống. Mã này phải khớp với SHA-256 của tệp đã tải xuống. _Nếu bạn bỏ qua SHA-256, thì các tệp từ xa có thể thay đổi vì các tệp từ xa có thể thay đổi. Nếu bạn bỏ qua trường này, bản dựng sẽ không bị ẩn. Bạn không bắt buộc phải làm cho quá trình phát triển dễ dàng hơn, nhưng phải đặt thuộc tính này hoặc "tính toàn vẹn" trước khi vận chuyển.

strip_prefix Chuỗi; không bắt buộc

Tiền tố thư mục để xoá khỏi các tệp đã trích xuất. Nhiều tệp lưu trữ có một thư mục cấp cao nhất chứa tất cả các tệp hữu ích trong kho lưu trữ. Thay vì phải chỉ định tiền tố này nhiều lần trong "build_file", bạn có thể sử dụng trường này để tách nó khỏi tất cả các tệp đã trích xuất. Ví dụ: giả sử bạn đang sử dụng "foo-lib-latest.zip", trong đó chứa thư mục "foo-lib-1.2.3/", trong đó có tệp "WORKSPACE" và các thư mục "src/", "lib/" và "test/" chứa mã thực tế mà bạn muốn tạo. Chỉ định `strip_prefix = "foo-lib-1.2.3"` để sử dụng thư mục `foo-lib-1.2.3` làm thư mục cấp cao nhất của bạn. Lưu ý rằng nếu có tệp nằm ngoài thư mục này, thì các tệp đó sẽ bị loại bỏ và không thể truy cập được (ví dụ: tệp giấy phép cấp cao nhất). Trong đó bao gồm các tệp/thư mục bắt đầu bằng tiền tố nhưng không nằm trong thư mục (ví dụ: "foo-lib-1.2.3.release-notes"). Nếu tiền tố đã chỉ định không khớp với thư mục trong kho lưu trữ, thì Bazel sẽ trả về lỗi.

type Chuỗi; không bắt buộc

Loại lưu trữ của tệp đã tải xuống. Theo mặc định, loại lưu trữ được xác định từ đuôi tệp của URL. Nếu tệp không có phần mở rộng, bạn có thể chỉ định rõ ràng một trong các phần mở rộng sau: ""zip"`, "jar"", ""war"", ""aar"", ""tar"", "tar.gz"", "t"tgz"", "tar.xz", "

url Chuỗi; không bắt buộc

URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Đó phải là một tệp, URL loại http hoặc https. Chuyển hướng. Không hỗ trợ xác thực. Bạn có thể linh hoạt hơn nhờ tham số url, cho phép chỉ định các URL thay thế để tìm nạp.

urls Danh sách chuỗi; không bắt buộc

Danh sách các URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục phải là một tệp, URL http hoặc https. Chuyển hướng. Không hỗ trợ xác thực. Các URL sẽ được thử theo thứ tự cho đến khi thành công, vì vậy trước tiên bạn nên liệt kê bản sao cục bộ. Nếu tất cả tệp tải xuống đều không thành công thì quy tắc này sẽ không hoạt động.

workspace_file Nhãn; không bắt buộc

Tệp cần dùng làm tệp "WORKSPACE" cho kho lưu trữ này. Bạn có thể chỉ định "workspace_file" hoặc "workspace_file_content" hoặc không thể chỉ định cả hai, hoặc không thể chỉ định cả hai.

workspace_file_content Chuỗi; không bắt buộc

Nội dung của tệp WORKSPACE cho kho lưu trữ này. Bạn có thể chỉ định "workspace_file" hoặc "workspace_file_content" hoặc không thể chỉ định cả hai, hoặc không thể chỉ định cả hai.

http_file

http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc,
          repo_mapping, sha256, url, urls)

Tải tệp xuống từ một URL và cung cấp tệp đó dưới dạng nhóm tệp.

Ví dụ: Giả sử bạn cần có gói debian cho các quy tắc tuỳ chỉnh của mình. Gói này có trên http://example.com/package.deb. Sau đó, bạn có thể thêm vào tệp WORKSPACE:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")

  http_file(
      name = "my_deb",
      url = "http://example.com/package.deb",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

Các mục tiêu sẽ chỉ định @my_deb//file làm phần phụ thuộc để phụ thuộc vào tệp này.

Thuộc tính

name Tên; bắt buộc

Tên dành riêng cho kho lưu trữ này.

auth_patterns Từ điển: Chuỗi -> Chuỗi; không bắt buộc

Tên máy chủ ánh xạ chính tả (không bắt buộc) đến các mẫu uỷ quyền tuỳ chỉnh. Nếu tên máy chủ của URL có trong lệnh này, thì giá trị sẽ được dùng làm mẫu khi tạo tiêu đề uỷ quyền cho yêu cầu http. Điều này cho phép sử dụng các giao thức uỷ quyền tuỳ chỉnh được dùng trong nhiều nhà cung cấp bộ nhớ trên đám mây phổ biến. Mẫu này hiện hỗ trợ 2 mã thông báo: <login><password>, được thay thế bằng giá trị tương đương trong tệp netrc cho cùng một tên máy chủ. Sau khi định dạng, kết quả được đặt làm giá trị cho trường Authorization của yêu cầu HTTP. Ví dụ về thuộc tính và netrc để tải http xuống API có bật OAuth2 bằng mã thông báo truy cập:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Yêu cầu HTTP cuối cùng sẽ có tiêu đề sau:
Authorization: Bearer RANDOM-TOKEN

canonical_id Chuỗi; không bắt buộc

Mã chính tắc của tệp được tải xuống. Nếu được chỉ định và không trống, Bazel sẽ không lấy tệp từ bộ nhớ đệm, trừ phi tệp đó được thêm vào bộ nhớ đệm thông qua một yêu cầu có cùng mã chính tắc. Nếu không chỉ định hoặc để trống, Bazel theo mặc định sẽ sử dụng URL của tệp làm mã nhận dạng chính tắc. Điều này giúp phát hiện lỗi phổ biến khi cập nhật URL mà không cập nhật hàm băm, dẫn đến việc các bản dựng thành công cục bộ nhưng không hoạt động trên máy nếu không có tệp trong bộ nhớ đệm. Bạn có thể vô hiệu hoá hành vi này bằng --repo_env=BAZEL_HTTP_RULES_URL_AS_DEFAULT_CANONICAL_ID=0.

downloaded_file_path Chuỗi; không bắt buộc

Đã tải đường dẫn được chỉ định cho tệp xuống

executable Boolean; không bắt buộc

Liệu tệp tải xuống có thể thực thi được hay không.

integrity Chuỗi; không bắt buộc

Giá trị tổng kiểm dự kiến ở định dạng Tính toàn vẹn của tài nguyên phụ của tệp được tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp được tải xuống. _Nếu bạn bỏ qua giá trị tổng kiểm vì các tệp từ xa có thể thay đổi, thì bạn sẽ gặp rủi ro bảo mật. Nếu bạn bỏ qua trường này, bản dựng sẽ không bị ẩn. Bạn không bắt buộc phải làm cho quá trình phát triển dễ dàng hơn, nhưng bạn phải đặt thuộc tính này hoặc "sha256" trước khi vận chuyển.

netrc Chuỗi; không bắt buộc

Vị trí của tệp .netrc cần dùng để xác thực

repo_mapping Từ điển: Chuỗi -> Chuỗi; bắt buộc

Từ điển, từ tên kho lưu trữ cục bộ đến tên kho lưu trữ toàn cục. Nhờ vậy, bạn có thể kiểm soát việc phân giải phần phụ thuộc không gian làm việc cho các phần phụ thuộc của kho lưu trữ này.

Ví dụ: một mục `"@foo": "@bar"` khai báo rằng, bất cứ lúc nào kho lưu trữ này phụ thuộc vào `@foo` (chẳng hạn như phần phụ thuộc trên `@foo//some:target`), thì nó thực sự sẽ giải quyết phần phụ thuộc đó trong `@bar` được khai báo toàn cục trong `@bar//some:target`).

sha256 Chuỗi; không bắt buộc

SHA-256 dự kiến của tệp đã tải xuống. Mã này phải khớp với SHA-256 của tệp đã tải xuống. _Nếu bạn bỏ qua SHA-256, thì các tệp từ xa có thể thay đổi vì các tệp từ xa có thể thay đổi. Nếu bạn bỏ qua trường này, bản dựng sẽ không bị ẩn. Bạn không bắt buộc phải làm cho quá trình phát triển dễ dàng hơn nhưng nên thiết lập trước khi vận chuyển.

url Chuỗi; không bắt buộc

URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Đó phải là một tệp, URL loại http hoặc https. Chuyển hướng. Không hỗ trợ xác thực. Bạn có thể linh hoạt hơn nhờ tham số url, cho phép chỉ định các URL thay thế để tìm nạp.

urls Danh sách chuỗi; không bắt buộc

Danh sách các URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục phải là một tệp, URL http hoặc https. Chuyển hướng. Không hỗ trợ xác thực. Các URL sẽ được thử theo thứ tự cho đến khi thành công, vì vậy trước tiên bạn nên liệt kê bản sao cục bộ. Nếu tất cả tệp tải xuống đều không thành công thì quy tắc này sẽ không hoạt động.

http_jar

http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, repo_mapping,
         sha256, url, urls)

Tải một tệp jar xuống từ một URL và đặt tệp đó ở dạng java_import

Tệp tải xuống phải có đuôi .jar.

Ví dụ: Giả sử kho lưu trữ hiện tại chứa mã nguồn của một chương trình trò chuyện, đã bị can thiệp vào hệ thống tại thư mục ~/chat-app. Phương thức này cần phụ thuộc vào một thư viện SSL có sẵn trong http://example.com/openssl-0.2.jar.

Các mục tiêu trong kho lưu trữ ~/chat-app có thể phụ thuộc vào mục tiêu này nếu bạn thêm các dòng sau vào ~/chat-app/WORKSPACE:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")

  http_jar(
      name = "my_ssl",
      url = "http://example.com/openssl-0.2.jar",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

Các mục tiêu sẽ chỉ định @my_ssl//jar làm phần phụ thuộc để phụ thuộc vào jar này.

Bạn cũng có thể tham chiếu các tệp trên hệ thống hiện tại (localhost) bằng cách sử dụng "file:///path/to/file" nếu bạn đang dùng các hệ thống dựa trên Unix. Nếu bạn đang dùng Windows, hãy sử dụng "file:///c:/path/to/file". Trong cả hai ví dụ, hãy lưu ý ba dấu gạch chéo (/) – hai dấu gạch chéo đầu tiên thuộc về file:// và dấu thứ ba thuộc về đường dẫn tuyệt đối đến tệp.

Thuộc tính

name Tên; bắt buộc

Tên dành riêng cho kho lưu trữ này.

auth_patterns Từ điển: Chuỗi -> Chuỗi; không bắt buộc

Tên máy chủ ánh xạ chính tả (không bắt buộc) đến các mẫu uỷ quyền tuỳ chỉnh. Nếu tên máy chủ của URL có trong lệnh này, thì giá trị sẽ được dùng làm mẫu khi tạo tiêu đề uỷ quyền cho yêu cầu http. Điều này cho phép sử dụng các giao thức uỷ quyền tuỳ chỉnh được dùng trong nhiều nhà cung cấp bộ nhớ trên đám mây phổ biến. Mẫu này hiện hỗ trợ 2 mã thông báo: <login><password>, được thay thế bằng giá trị tương đương trong tệp netrc cho cùng một tên máy chủ. Sau khi định dạng, kết quả được đặt làm giá trị cho trường Authorization của yêu cầu HTTP. Ví dụ về thuộc tính và netrc để tải http xuống API có bật OAuth2 bằng mã thông báo truy cập:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
Yêu cầu HTTP cuối cùng sẽ có tiêu đề sau:
Authorization: Bearer RANDOM-TOKEN

canonical_id Chuỗi; không bắt buộc

Mã chính tắc của tệp được tải xuống. Nếu được chỉ định và không trống, Bazel sẽ không lấy tệp từ bộ nhớ đệm, trừ phi tệp đó được thêm vào bộ nhớ đệm thông qua một yêu cầu có cùng mã chính tắc. Nếu không chỉ định hoặc để trống, Bazel theo mặc định sẽ sử dụng URL của tệp làm mã nhận dạng chính tắc. Điều này giúp phát hiện lỗi phổ biến khi cập nhật URL mà không cập nhật hàm băm, dẫn đến việc các bản dựng thành công cục bộ nhưng không hoạt động trên máy nếu không có tệp trong bộ nhớ đệm. Bạn có thể vô hiệu hoá hành vi này bằng --repo_env=BAZEL_HTTP_RULES_URL_AS_DEFAULT_CANONICAL_ID=0.

downloaded_file_name Chuỗi; không bắt buộc

Tên tệp được chỉ định cho tệp đã tải xuống

integrity Chuỗi; không bắt buộc

Giá trị tổng kiểm dự kiến ở định dạng Tính toàn vẹn của tài nguyên phụ của tệp được tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp được tải xuống. _Nếu bạn bỏ qua giá trị tổng kiểm vì các tệp từ xa có thể thay đổi, thì bạn sẽ gặp rủi ro bảo mật. Nếu bạn bỏ qua trường này, bản dựng sẽ không bị ẩn. Bạn không bắt buộc phải làm cho quá trình phát triển dễ dàng hơn, nhưng bạn phải đặt thuộc tính này hoặc "sha256" trước khi vận chuyển.

netrc Chuỗi; không bắt buộc

Vị trí của tệp .netrc cần dùng để xác thực

repo_mapping Từ điển: Chuỗi -> Chuỗi; bắt buộc

Từ điển, từ tên kho lưu trữ cục bộ đến tên kho lưu trữ toàn cục. Nhờ vậy, bạn có thể kiểm soát việc phân giải phần phụ thuộc không gian làm việc cho các phần phụ thuộc của kho lưu trữ này.

Ví dụ: một mục `"@foo": "@bar"` khai báo rằng, bất cứ lúc nào kho lưu trữ này phụ thuộc vào `@foo` (chẳng hạn như phần phụ thuộc trên `@foo//some:target`), thì nó thực sự sẽ giải quyết phần phụ thuộc đó trong `@bar` được khai báo toàn cục trong `@bar//some:target`).

sha256 Chuỗi; không bắt buộc

SHA-256 dự kiến của tệp đã tải xuống. Mã này phải khớp với SHA-256 của tệp đã tải xuống. _Nếu bạn bỏ qua SHA-256, thì các tệp từ xa có thể thay đổi vì các tệp từ xa có thể thay đổi. Nếu bạn bỏ qua trường này, bản dựng sẽ không bị ẩn. Bạn không bắt buộc phải làm cho quá trình phát triển dễ dàng hơn, nhưng phải đặt thuộc tính này hoặc "tính toàn vẹn" trước khi vận chuyển.

url Chuỗi; không bắt buộc

URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Đó phải là một tệp, URL loại http hoặc https. Chuyển hướng. Không hỗ trợ xác thực. Bạn có thể linh hoạt hơn nhờ tham số url, cho phép chỉ định các URL thay thế để tìm nạp. URL phải kết thúc bằng.jar`.

urls Danh sách chuỗi; không bắt buộc

Danh sách các URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục phải là một tệp, URL http hoặc https. Chuyển hướng. Không hỗ trợ xác thực. Các URL sẽ được thử theo thứ tự cho đến khi thành công, vì vậy trước tiên bạn nên liệt kê bản sao cục bộ. Nếu tất cả tệp tải xuống đều không thành công thì quy tắc này sẽ không hoạt động. Tất cả URL phải kết thúc bằng.jar`.