Quy tắc kho lưu trữ http

Báo cáo vấn đề Xem nguồn Hằng đêm · 7,4 của Google. 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

Quy tắc tải tệp và tệp 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 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_file_integrity, remote_file_urls, 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 đó, và cung cấp các mục tiêu để 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 cho 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. Cần phụ thuộc vào một thư viện SSL Tệp này có 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 riêng biệt cho kho lưu trữ này.

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

Thư mục đích liên quan đến 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ó) vào đường dẫn tệp trong kho lưu trữ. Ví dụ: tệp API "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

Lệnh chính tả không bắt buộc ánh xạ tên máy chủ lưu trữ tới mẫu uỷ quyền tuỳ chỉnh. Nếu tên máy chủ của URL xuất hiện trong lệnh này, giá trị sẽ được sử 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 dịch vụ lưu trữ trên đám mây phổ biến. Hình mở khoá 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ả sẽ được đặt làm giá trị cho trường Authorization của yêu cầu HTTP. Thuộc tính và netrc mẫu để tải http xuống một API hỗ trợ oauth2 bằng mã thông báo xác thực:

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 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). Không cần đặt tên tệp này là BUILD nhưng bạn có thể đặt tên tệp này (chẳng hạn như BUILD.new-repo-name có thể hoạt động tốt để phân biệt tệp 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 được chỉ định cả hai.

build_file_content String; không bắt buộc

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

canonical_id String; không bắt buộc

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

integrity String; không bắt buộc

Checksum dự kiến ở định dạng Subresource Integrity của tệp đã tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua giá trị tổng kiểm vì tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không bị ngắt quãng. Bạn không bắt buộc phải làm việc này để việc 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 xuất bản.

netrc String; không bắt buộc

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

patch_args Danh sách các 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 các đối số khác không phải -p được chỉ định, 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à không chỉ định thuộc tính patch_tool, hệ thống sẽ sử dụng "patch". Vấn đề này chỉ ảnh hưởng đến các tệp bản vá trong thuộc tính "bản vá".

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

Trình tự các lệnh Bash sẽ được áp dụng trên Linux/Macos sau khi áp dụng các bản vá.

patch_cmds_win Danh sách các 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 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, yêu cầu tệp nhị phân Bash phải tồn tại.

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

Tiện ích patch(1) nên 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 sẽ được áp dụng dưới dạng 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ợ tính năng 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 bản vá nếu thuộc tính `patch_tool` được chỉ định hoặc có các đối số khác ngoài `-p` trong thuộc tính `patch_args`.

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

Một bản đồ các đường dẫn tương đối của tệp (khoá) với giá trị tính toàn vẹn (giá trị) của tệp. Các đường dẫn tương đối này phải ánh xạ đến các tệp (khoá) trong thuộc tính "remote_file_urls".

remote_file_urls Từ điển: Chuỗi -> Danh sách chuỗi; không bắt buộc

Bản đồ đường dẫn tương đối (khoá) đến danh sách URL (giá trị) cần tải xuống và cung cấp dưới dạng tệp phủ trên kho lưu trữ. Điều này rất hữu ích khi bạn muốn thêm các tệp WORKSPACE hoặc BUILD.bazel phía trên kho lưu trữ hiện có. Các tệp được tải xuống trước khi áp dụng các bản vá trong thuộc tính `patches` và danh sách URL phải là tất cả các bản sao có thể của cùng một tệp. Các URL được thử theo thứ tự cho đến khi một URL thành công.

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

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

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

Bản đồ URL tệp bản vá đến giá trị tính toàn vẹn của tệp đó. Các bản đồ này được áp dụng sau khi trích xuất tệp lưu trữ và trước khi áp dụng tệp bản vá từ thuộc tính "bản vá". Công cụ 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ố dải bản vá bằng `remote_patch_strip`

repo_mapping Bộ 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. Điều này cho phép kiểm soát việc phân giải phần phụ thuộc của 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ục "@foo": "@bar" khai báo rằng bất cứ khi 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ì kho lưu trữ này sẽ thực sự phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target").

sha256 String; không bắt buộc

Hàm băm SHA-256 dự kiến của tệp đã tải xuống. Hàm băm này phải khớp với hàm băm SHA-256 của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua SHA-256 vì các tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không bị ngắt quãng. Không bắt buộc phải phát triển để trở nên dễ dàng hơn nhưng bạn 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 cần xoá khỏi các tệp đã trích xuất. Nhiều tệp lưu trữ chứa một thư mục cấp cao nhất chứa tất cả các tệp hữu ích trong tệp 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 trường này khỏi tất cả tệp được giải nén. Ví dụ: giả sử bạn đang sử dụng "foo-lib-Latest.zip", trong đó chứa phương thức thư mục "foo-lib-1.2.3/" trong đó có một tệp "WORKSPACE" và Các thư mục "src/", "lib/" và "test/" chứa mã thực tế mà bạn mà bạn muốn xây dựng. 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. Xin lưu ý rằng nếu có tệp nằm ngoài thư mục này, chúng 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). Điều này 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ố được chỉ định không khớp với một thư mục trong kho lưu trữ, Bazel sẽ trả về lỗi.

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

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

url String; không bắt buộc

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

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

Danh sách URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục nhập phải là một tệp, URL http hoặc https. Tuân theo lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Các URL đượ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ê các bản sao cục bộ. Nếu tất cả các lượt tải xuống đều không thành công, thì quy tắc này sẽ không thành công.

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

Tệp 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 chỉ định, nhưng không thể chỉ định cả hai.

workspace_file_content String; 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 chỉ định, nhưng 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ừ URL và đặt tệp đó để sử dụng dưới dạng tệp nhóm.

Ví dụ: Giả sử bạn cần có một gói debian cho các quy tắc tuỳ chỉnh của mình. Gói này có tại 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 riêng biệt cho kho lưu trữ này.

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

Một dict tuỳ chọn ánh xạ tên máy chủ lưu trữ đến các mẫu uỷ quyền tuỳ chỉnh. Nếu tên máy chủ của URL có trong tập hợp 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 tuỳ chỉnh 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ác mã này được thay thế bằng giá trị tương đương trong tệp netrc cho cùng một tên máy chủ lưu trữ. Sau khi định dạng, kết quả sẽ được đặt làm giá trị cho trường Authorization của yêu cầu HTTP. Thuộc tính và netrc mẫu để tải http xuống một API hỗ trợ oauth2 bằng mã thông báo xác thực:

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

downloaded_file_path String; không bắt buộc

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

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

Nếu tệp đã tải xuống có thể thực thi.

integrity String; không bắt buộc

Checksum dự kiến ở định dạng Subresource Integrity của tệp đã tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua giá trị tổng kiểm vì tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không bị ngắt quãng. Bạn không bắt buộc phải làm việc này để việc 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 xuất bản.

netrc String; không bắt buộc

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

repo_mapping Từ điển: Chuỗi -> String; 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. Điều này cho phép bạn kiểm soát quá trình 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ục "@foo": "@bar" khai báo rằng bất cứ khi 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ì kho lưu trữ này sẽ thực sự phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target").

sha256 String; không bắt buộc

SHA-256 dự kiến của tệp được tải xuống. Hàm băm này phải khớp với hàm băm SHA-256 của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua SHA-256 vì các tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không bị ngắt quãng. Không bắt buộc phải phát triển dễ dàng hơn nhưng nên được đặt trước khi vận chuyển.

url String; không bắt buộc

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

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

Danh sách URL đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục nhập phải là một tệp, URL http hoặc https. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Các URL đượ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ê các bản sao cục bộ. Nếu tất cả lượt tải xuống đều không thành công, thì quy tắc này sẽ không thành công.

http_jar

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

Tải tệp jar xuống từ một URL và cung cấp tệp đó dưới 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 cho một chương trình trò chuyện, được can thiệp vào hệ thống tại thư mục ~/chat-app. Thư viện 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 (máy chủ cục bộ) bằng cách sử dụng "file:///path/to/file" nếu bạn đang sử dụng 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 ý đến ba dấu gạch chéo (/) – hai dấu gạch chéo đầu tiên thuộc về file:// và dấu gạch chéo 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 riêng biệt cho kho lưu trữ này.

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

Lệnh chính tả không bắt buộc ánh xạ tên máy chủ lưu trữ tới mẫu uỷ quyền tuỳ chỉnh. Nếu tên máy chủ của URL có trong tập hợp 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 tuỳ chỉnh 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ác mã này được thay thế bằng giá trị tương đương trong tệp netrc cho cùng một tên máy chủ lưu trữ. Sau khi định dạng, kết quả sẽ được đặt làm giá trị cho trường Authorization của yêu cầu HTTP. Thuộc tính ví dụ và netrc cho bản tải xuống http cho API đã bật oauth2 bằng mã thông báo của phương thức mang:

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 String; không bắt buộc

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

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

Checksum dự kiến ở định dạng Subresource Integrity của tệp đã tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua giá trị tổng kiểm vì tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không bị ngắt quãng. Bạn không bắt buộc phải làm việc này để việc 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 xuất bản.

netrc String; không bắt buộc

Vị trí của tệp .netrc để sử dụng cho việc xác thực

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

Một từ điển từ tên kho lưu trữ cục bộ thành tên kho lưu trữ toàn cục. Điều này cho phép kiểm soát việc phân giải phần phụ thuộc của 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ục "@foo": "@bar" khai báo rằng bất cứ khi 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ì kho lưu trữ này sẽ thực sự phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target").

sha256 String; không bắt buộc

Hàm băm SHA-256 dự kiến của tệp đã tải xuống. Hàm băm này phải khớp với hàm băm SHA-256 của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua SHA-256 vì các tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không bị ngắt quãng. Không bắt buộc phải phát triển để trở nên dễ dàng hơn nhưng bạn 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. Đây phải là tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ xác thực. Có thể linh hoạt hơn nhờ tham số url cho phép để chỉ định URL thay thế để tìm nạp. URL phải kết thúc bằng.jar.

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

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