http 저장소 규칙

문제 신고 소스 보기 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

다음 함수는 @bazel_tools//tools/build_defs/repo:http.bzl에서 로드할 수 있습니다.

HTTP를 통해 파일 및 보관 파일을 다운로드하기 위한 규칙입니다.

설정

이러한 규칙을 사용하려면 다음과 같이 WORKSPACE 파일에 로드합니다.

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

이 규칙은 네이티브 HTTP 규칙의 개선된 버전이며 결국 네이티브 규칙을 대체할 예정입니다.

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)

Bazel 저장소를 압축된 보관 파일로 다운로드하고 압축을 푼 후 바인딩할 수 있도록 대상을 만듭니다.

"zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", tar.bz2, "ar", "deb" 파일 확장자를 지원합니다.

예: 현재 저장소에 ~/chat-app 디렉터리에 루팅된 채팅 프로그램의 소스 코드가 포함되어 있다고 가정해 보겠습니다. http://example.com/openssl.zip에서 제공되는 SSL 라이브러리에 종속되어야 합니다. 이 .zip 파일에는 다음과 같은 디렉터리 구조가 포함됩니다.

  WORKSPACE
  src/
    openssl.cc
    openssl.h

로컬 저장소에서 사용자가 다음과 같은 타겟 정의가 포함된 openssl.BUILD 파일을 만듭니다.

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

다음 줄을 ~/chat-app/WORKSPACE에 추가하면 ~/chat-app 저장소의 타겟이 이 타겟에 종속될 수 있습니다.

  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",
  )

그러면 타겟은 @my_ssl//:openssl-lib를 종속 항목으로 지정합니다.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

add_prefix 문자열(선택사항)

저장소 디렉터리를 기준으로 한 대상 디렉터리입니다. 아카이브 내 파일 경로에 `strip_prefix`(있는 경우)를 적용한 후 아카이브가 이 디렉터리에 압축 해제됩니다. 예를 들어 `add_prefix = "bar"`이고 `strip_prefix = "foo-1.2.3"`인 경우 `foo-1.2.3/src/foo.h` 파일은 `bar/src/foo.h`로 압축 해제됩니다.

auth_patterns 사전: 문자열 -> 문자열(선택사항)

호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다. URL의 호스트 이름이 이 사전에 있으면 값이 HTTP 요청의 승인 헤더를 생성할 때 패턴으로 사용됩니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다. 이 패턴은 현재 <login><password>라는 두 개의 토큰을 지원하며, 이는 동일한 호스트 이름의 netrc 파일에서 상응하는 값으로 대체됩니다. 형식이 지정된 후 결과는 HTTP 요청의 Authorization 필드 값으로 설정됩니다. bearer 토큰을 사용하여 oauth2 지원 API에 대한 HTTP 다운로드의 속성 및 netrc 예시:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
최종 HTTP 요청에는 다음 헤더가 포함됩니다.
Authorization: Bearer RANDOM-TOKEN

build_file 라벨: 선택사항

이 저장소의 BUILD 파일로 사용할 파일입니다.이 속성은 절대 라벨입니다 (기본 저장소에는 '@//' 사용). 파일 이름이 BUILD일 필요는 없지만 BUILD일 수 있습니다. 저장소의 실제 BUILD 파일과 구별하기 위해 BUILD.new-repo-name과 같은 이름을 지정하는 것이 좋습니다. build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

build_file_content 문자열(선택사항)

이 저장소의 BUILD 파일 콘텐츠입니다. build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

canonical_id 문자열(선택사항)

다운로드된 파일의 표준 ID입니다. 지정되고 비어 있지 않으면 동일한 표준 ID가 있는 요청에 의해 캐시에 추가된 것이 아니라면 Bazel은 캐시에서 파일을 가져오지 않습니다. 지정하지 않거나 비워 두면 Bazel은 기본적으로 파일의 URL을 정규 ID로 사용합니다. 이렇게 하면 해시를 업데이트하지 않고 URL을 업데이트하는 일반적인 실수를 포착하여 로컬에서는 빌드가 성공하지만 캐시에 파일이 없는 머신에서는 빌드가 실패하는 문제를 방지할 수 있습니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0으로 사용 중지할 수 있습니다.

integrity 문자열(선택사항)

다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 출시 전에 이 속성 또는 `sha256` 을 설정해야 합니다.

netrc 문자열(선택사항)

인증에 사용할 .netrc 파일의 위치

patch_args 문자열 목록(선택사항)

패치 도구에 제공된 인수입니다. 기본값은 -p0이지만 git에서 생성된 패치에는 일반적으로 -p1이 필요합니다. -p 인수가 여러 개 지정된 경우 마지막 인수가 적용됩니다. -p 이외의 인수가 지정되면 Bazel은 Bazel 네이티브 패치 구현 대신 패치 명령줄 도구를 사용합니다. 패치 명령줄 도구로 대체하고 patch_tool 속성이 지정되지 않은 경우 `patch` 가 사용됩니다. 이는 `패치` 속성의 패치 파일에만 영향을 미칩니다.

patch_cmds 문자열 목록(선택사항)

패치가 적용된 후 Linux/Macos에 적용할 Bash 명령어의 시퀀스입니다.

patch_cmds_win 문자열 목록(선택사항)

패치가 적용된 후 Windows에 적용할 PowerShell 명령어의 시퀀스입니다. 이 속성을 설정하지 않으면 Windows에서 patch_cmds가 실행되며, 이 경우 Bash 바이너리가 있어야 합니다.

patch_tool 문자열(선택사항)

사용할 패치(1) 유틸리티입니다. 이 옵션을 지정하면 Bazel은 Bazel 네이티브 패치 구현 대신 지정된 패치 도구를 사용합니다.

patches 라벨 목록(선택사항)

보관 파일을 추출한 후 패치로 적용할 파일 목록입니다. 기본적으로는 퍼징 일치 및 바이너리 패치를 지원하지 않는 Bazel 네이티브 패치 구현을 사용하지만, `patch_tool` 속성이 지정되거나 `patch_args` 속성에 `-p` 이외의 인수가 있는 경우 Bazel은 패치 명령줄 도구를 사용하도록 대체합니다.

remote_patch_strip 정수(선택사항)

원격 패치의 파일 이름에서 제거할 선행 슬래시의 수입니다.

remote_patches 사전: 문자열 -> 문자열(선택사항)

패치 파일 URL과 무결성 값의 매핑입니다. 보관 파일을 추출한 후 `패치` 속성의 패치 파일을 적용하기 전에 적용됩니다. Bazel 네이티브 패치 구현을 사용합니다. `remote_patch_strip`으로 패치 스트립 번호를 지정할 수 있습니다.

repo_mapping 사전: 문자열 -> 문자열; 필수

로컬 저장소 이름을 글로벌 저장소 이름으로 변환하는 사전입니다. 이를 통해 이 저장소의 종속 항목에 대한 워크스페이스 종속 항목 확인을 제어할 수 있습니다.

예를 들어 항목 `"@foo": "@bar"` 는 이 저장소가 `@foo`에 종속될 때마다 (예: `@foo//some:target`에 대한 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 실제로 해당 종속 항목을 확인해야 함을 선언합니다.

sha256 문자열(선택사항)

다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 이 속성 또는 `integrity` 는 출시 전에 설정해야 합니다.

strip_prefix 문자열(선택사항)

추출된 파일에서 제거할 디렉터리 접두사입니다. 많은 보관 파일에는 보관 파일의 모든 유용한 파일이 포함된 최상위 디렉터리가 포함되어 있습니다. `build_file`에서 이 접두사를 반복해서 지정하는 대신 이 필드를 사용하여 추출된 모든 파일에서 접두사를 삭제할 수 있습니다. 예를 들어 `foo-lib-1.2.3/` 디렉터리가 포함된 `foo-lib-latest.zip`을 사용하고 있다고 가정해 보겠습니다. 이 디렉터리 아래에는 `WORKSPACE` 파일이 있고, 빌드하려는 실제 코드가 포함된 `src/`, `lib/`, `test/` 디렉터리가 있습니다. `foo-lib-1.2.3` 디렉터리를 최상위 디렉터리로 사용하려면 `strip_prefix = "foo-lib-1.2.3"`을 지정합니다. 이 디렉터리 외부에 파일이 있으면 삭제되고 액세스할 수 없게 됩니다 (예: 최상위 라이선스 파일). 여기에는 접두사로 시작하지만 디렉터리에 없는 파일/디렉터리(예: `foo-lib-1.2.3.release-notes`). 지정된 접두사가 보관 파일의 디렉터리와 일치하지 않으면 Bazel에서 오류를 반환합니다.

type 문자열(선택사항)

다운로드한 파일의 보관 파일 유형입니다. 기본적으로 보관 파일 유형은 URL의 파일 확장자에서 결정됩니다. 파일에 확장자가 없는 경우 다음 중 하나를 명시적으로 지정할 수 있습니다. `"zip"`, `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, `"tzst"`, `"tar.bz2"`, `"ar"`, 또는 `"deb"`.

url 문자열(선택사항)

Bazel에서 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 작업할 수 있습니다.

urls 문자열 목록(선택사항)

Bazel에서 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. URL은 하나가 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다.

workspace_file 라벨: 선택사항

이 저장소의 `WORKSPACE` 파일로 사용할 파일입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정하지 않을 수 있습니다.

workspace_file_content 문자열(선택사항)

이 저장소의 WORKSPACE 파일 콘텐츠입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정하지 않을 수 있습니다.

http_file

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

URL에서 파일을 다운로드하여 파일 그룹으로 사용할 수 있도록 합니다.

예: 맞춤 규칙에 debian 패키지가 필요하다고 가정해 보겠습니다. 이 패키지는 http://example.com/package.deb에서 다운로드할 수 있습니다. 그런 다음 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",
  )

타겟은 이 파일에 종속되도록 @my_deb//file를 종속 항목으로 지정합니다.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

auth_patterns 사전: 문자열 -> 문자열(선택사항)

호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다. URL의 호스트 이름이 이 사전에 있으면 값이 HTTP 요청의 승인 헤더를 생성할 때 패턴으로 사용됩니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다. 이 패턴은 현재 <login><password>라는 두 개의 토큰을 지원하며, 이는 동일한 호스트 이름의 netrc 파일에서 상응하는 값으로 대체됩니다. 형식이 지정된 후 결과는 HTTP 요청의 Authorization 필드 값으로 설정됩니다. bearer 토큰을 사용하여 oauth2 지원 API에 대한 HTTP 다운로드의 속성 및 netrc 예시:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
최종 HTTP 요청에는 다음 헤더가 포함됩니다.
Authorization: Bearer RANDOM-TOKEN

canonical_id 문자열(선택사항)

다운로드된 파일의 표준 ID입니다. 지정되고 비어 있지 않으면 동일한 표준 ID가 있는 요청에 의해 캐시에 추가된 것이 아니라면 Bazel은 캐시에서 파일을 가져오지 않습니다. 지정하지 않거나 비워 두면 Bazel은 기본적으로 파일의 URL을 정규 ID로 사용합니다. 이렇게 하면 해시를 업데이트하지 않고 URL을 업데이트하는 일반적인 실수를 포착하여 로컬에서는 빌드가 성공하지만 캐시에 파일이 없는 머신에서는 빌드가 실패하는 문제를 방지할 수 있습니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0으로 사용 중지할 수 있습니다.

downloaded_file_path 문자열(선택사항)

다운로드된 파일에 할당된 경로

executable 불리언(선택사항)

다운로드한 파일을 실행 파일로 만들어야 하는지 여부입니다.

integrity 문자열(선택사항)

다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 출시 전에 이 속성 또는 `sha256` 을 설정해야 합니다.

netrc 문자열(선택사항)

인증에 사용할 .netrc 파일의 위치

repo_mapping 사전: 문자열 -> 문자열; 필수

로컬 저장소 이름을 글로벌 저장소 이름으로 변환하는 사전입니다. 이를 통해 이 저장소의 종속 항목에 대한 워크스페이스 종속 항목 확인을 제어할 수 있습니다.

예를 들어 항목 `"@foo": "@bar"` 는 이 저장소가 `@foo`에 종속될 때마다 (예: `@foo//some:target`에 대한 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 실제로 해당 종속 항목을 확인해야 함을 선언합니다.

sha256 문자열(선택사항)

다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 출시 전에 설정해야 합니다.

url 문자열(선택사항)

Bazel에서 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 작업할 수 있습니다.

urls 문자열 목록(선택사항)

Bazel에서 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. URL은 하나가 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다.

http_jar

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

URL에서 jar를 다운로드하여 java_import로 사용할 수 있도록 합니다.

다운로드한 파일의 확장자는 .jar여야 합니다.

예: 현재 저장소에 ~/chat-app 디렉터리에 루팅된 채팅 프로그램의 소스 코드가 포함되어 있다고 가정해 보겠습니다. http://example.com/openssl-0.2.jar에서 사용할 수 있는 SSL 라이브러리에 종속되어야 합니다.

~/chat-app/WORKSPACE에 다음 줄을 추가하면 ~/chat-app 저장소의 타겟이 이 타겟에 종속될 수 있습니다.

  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",
  )

타겟은 이 jar에 종속되는 종속 항목으로 @my_ssl//jar를 지정합니다.

Unix 기반 시스템을 사용하는 경우 'file:///path/to/file'을 사용하여 현재 시스템 (localhost)의 파일을 참조할 수도 있습니다. Windows의 경우 'file:///c:/path/to/file'을 사용하세요. 두 예시 모두 슬래시 (/)가 세 개 있습니다. 처음 두 슬래시는 file://에 속하고 세 번째 슬래시는 파일의 절대 경로에 속합니다.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

auth_patterns 사전: 문자열 -> 문자열(선택사항)

호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다. URL의 호스트 이름이 이 사전에 있으면 값이 HTTP 요청의 승인 헤더를 생성할 때 패턴으로 사용됩니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다. 이 패턴은 현재 <login><password>라는 두 개의 토큰을 지원하며, 이는 동일한 호스트 이름의 netrc 파일에서 상응하는 값으로 대체됩니다. 형식이 지정된 후 결과는 HTTP 요청의 Authorization 필드 값으로 설정됩니다. bearer 토큰을 사용하여 oauth2 지원 API에 대한 HTTP 다운로드의 속성 및 netrc 예시:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
최종 HTTP 요청에는 다음 헤더가 포함됩니다.
Authorization: Bearer RANDOM-TOKEN

canonical_id 문자열(선택사항)

다운로드된 파일의 표준 ID입니다. 지정되고 비어 있지 않으면 동일한 표준 ID가 있는 요청에 의해 캐시에 추가된 것이 아니라면 Bazel은 캐시에서 파일을 가져오지 않습니다. 지정하지 않거나 비워 두면 Bazel은 기본적으로 파일의 URL을 정규 ID로 사용합니다. 이렇게 하면 해시를 업데이트하지 않고 URL을 업데이트하는 일반적인 실수를 포착하여 로컬에서는 빌드가 성공하지만 캐시에 파일이 없는 머신에서는 빌드가 실패하는 문제를 방지할 수 있습니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0으로 사용 중지할 수 있습니다.

downloaded_file_name 문자열(선택사항)

다운로드된 jar에 할당된 파일 이름

integrity 문자열(선택사항)

다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 출시 전에 이 속성 또는 `sha256` 을 설정해야 합니다.

netrc 문자열(선택사항)

인증에 사용할 .netrc 파일의 위치

repo_mapping 사전: 문자열 -> 문자열; 필수

로컬 저장소 이름을 글로벌 저장소 이름으로 변환하는 사전입니다. 이를 통해 이 저장소의 종속 항목에 대한 워크스페이스 종속 항목 확인을 제어할 수 있습니다.

예를 들어 항목 `"@foo": "@bar"` 는 이 저장소가 `@foo`에 종속될 때마다 (예: `@foo//some:target`에 대한 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 실제로 해당 종속 항목을 확인해야 함을 선언합니다.

sha256 문자열(선택사항)

다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 이 속성 또는 `integrity` 는 출시 전에 설정해야 합니다.

url 문자열(선택사항)

Bazel에서 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 작업할 수 있습니다. URL은 `.jar`로 끝나야 합니다.

urls 문자열 목록(선택사항)

Bazel에서 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. URL은 하나가 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. 모든 URL은 `.jar`로 끝나야 합니다.