InfoGrab Docs

Maven 가상 레지스트리

요약

이 기능의 사용 가능 여부는 기능 플래그에 의해 제어됩니다. Maven 가상 레지스트리는 GitLab에서 여러 외부 레지스트리의 패키지를 관리하고 배포하기 위한 단일하고 잘 알려진 URL을 사용합니다. Maven 가상 레지스트리를 사용하여 다음을 수행할 수 있습니다:

히스토리
Feature flag

이 기능의 사용 가능 여부는 기능 플래그에 의해 제어됩니다. 자세한 내용은 히스토리를 참조하세요. 이 기능은 베타로 제공됩니다. 이 기능을 사용하기 전에 설명서를 주의 깊게 검토하세요.

Maven 가상 레지스트리는 GitLab에서 여러 외부 레지스트리의 패키지를 관리하고 배포하기 위한 단일하고 잘 알려진 URL을 사용합니다.

Maven 가상 레지스트리를 사용하여 다음을 수행할 수 있습니다:

  • 가상 레지스트리 생성
  • 가상 레지스트리를 공개 및 비공개 업스트림 레지스트리에 연결
  • 구성된 업스트림에서 패키지를 가져오도록 Maven 클라이언트 구성
  • 사용 가능한 업스트림에 대한 캐시 항목 관리

이 접근 방식은 시간이 지남에 따라 더 나은 패키지 성능을 제공하고, Maven 패키지를 더 쉽게 관리할 수 있게 합니다.

가상 레지스트리 및 업스트림 레지스트리 관리에 대한 일반 정보는 가상 레지스트리를 참조하세요.

사전 요구 사항#

Maven 가상 레지스트리를 사용하기 전에:

Maven 가상 레지스트리를 사용할 때는 다음 제한 사항에 주의하세요:

  • 최상위 그룹당 최대 20개의 Maven 가상 레지스트리를 생성할 수 있습니다.
  • 특정 Maven 가상 레지스트리에 최대 20개의 업스트림만 설정할 수 있습니다.
  • 기술적인 이유로 인해, 오브젝트 스토리지 구성에서 설정된 값에 관계없이 proxy_download 설정이 강제로 활성화됩니다.
  • Geo 지원이 구현되지 않았습니다. 이슈 473033에서 개발 현황을 추적할 수 있습니다.

가상 레지스트리 관리#

히스토리
  • Introduced in GitLab 18.5 with a flag named ui_for_virtual_registries. Enabled by default.
  • Changed in GitLab 18.6 to a flag named maven_virtual_registry. Enabled by default. Feature flag ui_for_virtual_registries removed.

그룹에 대한 Maven 가상 레지스트리를 관리합니다.

API를 사용할 수도 있습니다.

Maven 가상 레지스트리 생성#

Maven 가상 레지스트리를 생성하려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다. 이 그룹은 최상위 수준이어야 합니다.
  2. 배포 > 가상 레지스트리를 선택합니다.
  3. 다음 경우에 따라:
    • 기존 레지스트리가 있는 경우, 레지스트리 생성을 선택합니다. 드롭다운 목록에서 Maven을 선택합니다.
    • 기존 레지스트리가 없는 경우, 드롭다운 목록에서 Maven을 선택합니다. 그런 다음 레지스트리 생성을 선택합니다.
  4. 이름과 선택적 설명을 입력합니다.
  5. 레지스트리 생성을 선택합니다.

업스트림 레지스트리 관리#

가상 레지스트리의 업스트림 Maven 레지스트리를 관리합니다.

Maven 업스트림 레지스트리 생성#

가상 레지스트리에 연결할 Maven 업스트림 레지스트리를 생성합니다.

사전 요구 사항:

Maven 업스트림 레지스트리를 생성하려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다. 이 그룹은 최상위 수준이어야 합니다.

  2. 배포 > 가상 레지스트리를 선택합니다.

  3. 레지스트리 유형에서 레지스트리 보기를 선택합니다.

  4. 레지스트리 탭에서 레지스트리를 선택합니다.

  5. 업스트림 추가를 선택합니다. 가상 레지스트리에 기존 업스트림이 있는 경우, 드롭다운 목록에서 다음 중 하나를 선택합니다:

    • 새 업스트림 생성하여 업스트림을 구성합니다.
    • 기존 업스트림 연결 > 기존 업스트림 선택.
      1. 드롭다운 목록에서 업스트림을 선택합니다.
      2. 선택 사항. 생성하기 전에 업스트림 연결을 테스트하려면 업스트림 테스트를 선택합니다.
      3. 업스트림 추가를 선택합니다.
  6. 필드를 작성합니다.

    • 사용자 이름비밀번호를 모두 포함하거나 둘 다 포함하지 않아야 합니다. 설정하지 않으면 공개(익명) 요청이 업스트림 접근에 사용됩니다.

    • 업스트림을 Maven Central에 연결하려면, 업스트림 URL로 다음을 사용합니다:

      https://repo1.maven.org/maven2
      
    • 아티팩트 캐싱 기간메타데이터 캐싱 기간은 기본적으로 24시간입니다. 캐시 항목 확인을 비활성화하거나 Maven Central을 사용하는 경우 0으로 설정합니다.

    • 생성하기 전에 업스트림 연결을 테스트하려면 업스트림 테스트를 선택합니다.

  7. 업스트림 생성을 선택합니다.

캐시 유효성 설정에 대한 자세한 내용은 캐시 유효 기간 설정을 참조하세요.

Maven 가상 레지스트리 사용#

가상 레지스트리를 생성한 후에는 가상 레지스트리를 통해 의존성을 가져오도록 Maven 클라이언트를 구성해야 합니다.

Maven 클라이언트 구성#

Maven 가상 레지스트리는 다음 Maven 클라이언트를 지원합니다:

Maven 클라이언트 구성에서 가상 레지스트리를 선언해야 합니다.

모든 클라이언트는 인증이 필요합니다. 클라이언트 인증을 위해 사용자 지정 HTTP 헤더 또는 Basic Auth를 사용할 수 있습니다. 각 클라이언트에 대해 아래 구성 중 하나를 사용해야 합니다.

토큰 유형 이름은 다음이어야 함 토큰
Personal access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group deploy token Deploy-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
CI/CD Job token Job-Token ${CI_JOB_TOKEN}
OAuth 2.0 token Authorization Bearer <your_oauth_token>

settings.xml 파일에 다음 섹션을 추가합니다.

<settings>
  <servers>
    <server>
      <id>gitlab-maven</id>
      <configuration>
        <httpHeaders>
          <property>
            <name>REPLACE_WITH_NAME</name>
            <value>REPLACE_WITH_TOKEN</value>
          </property>
        </httpHeaders>
      </configuration>
    </server>
  </servers>
</settings>

mvn 애플리케이션에서 가상 레지스트리를 두 가지 방법으로 구성할 수 있습니다:

  • 기본 레지스트리(Maven central) 위에 추가 레지스트리로 구성. 이 구성에서는 가상 레지스트리와 기본 레지스트리 모두에 있는 프로젝트 의존성을 선언된 레지스트리 중 어디에서든 가져올 수 있습니다.
  • 기본 레지스트리(Maven central)를 대체하는 방식으로 구성. 이 구성에서는 가상 레지스트리를 통해 의존성을 가져옵니다. 필요한 공개 의존성을 누락하지 않으려면 Maven Central을 가상 레지스트리의 마지막 업스트림으로 구성해야 합니다.

Maven 가상 레지스트리를 추가 레지스트리로 구성하려면, pom.xml 파일에 repository 요소를 추가합니다:

<repositories>
  <repository>
    <id>gitlab-maven</id>
    <url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id></url>
  </repository>
</repositories>
  • <id>: settings.xml에서 사용된 <server>의 동일한 ID.
  • <registry_id>: Maven 가상 레지스트리의 ID.

Maven 가상 레지스트리를 기본 레지스트리 대체로 구성하려면, settings.xmlmirrors 요소를 추가합니다:

<settings>
  <servers>
    ...
  </servers>
  <mirrors>
    <mirror>
      <id>central-proxy</id>
      <name>GitLab proxy of central repo</name>
      <url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id></url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>
  • <registry_id>: Maven 가상 레지스트리의 ID.
토큰 유형 이름은 다음이어야 함 토큰
Personal access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group deploy token Deploy-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
CI/CD Job token Job-Token ${CI_JOB_TOKEN}
OAuth 2.0 token Authorization Bearer <your_oauth_token>

GRADLE_USER_HOME 디렉토리에 다음 내용의 gradle.properties 파일을 생성합니다:

gitLabPrivateToken=REPLACE_WITH_YOUR_TOKEN

build.gradlerepositories 섹션을 추가합니다.

  • Groovy DSL에서:

    repositories {
        maven {
            url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>"
            name "GitLab"
            credentials(HttpHeaderCredentials) {
                name = 'REPLACE_WITH_NAME'
                value = gitLabPrivateToken
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
    }
    
  • Kotlin DSL에서:

    repositories {
        maven {
            url = uri("https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>")
            name = "GitLab"
            credentials(HttpHeaderCredentials::class) {
                name = "REPLACE_WITH_NAME"
                value = findProperty("gitLabPrivateToken") as String?
            }
            authentication {
                create("header", HttpHeaderAuthentication::class)
            }
        }
    }
    
  • <registry_id>: Maven 가상 레지스트리의 ID.

토큰 유형 사용자 이름은 다음이어야 함 토큰
Personal access token 사용자의 사용자 이름 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group deploy token 배포 토큰의 사용자 이름 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group access token 액세스 토큰에 연결된 사용자의 사용자 이름 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
CI/CD Job token gitlab-ci-token sys.env.get("CI_JOB_TOKEN").get

SBT의 인증은 기본 HTTP 인증을 기반으로 합니다. 이름과 비밀번호를 제공해야 합니다.

build.sbt에 다음 줄을 추가합니다:

resolvers += ("gitlab" at "<endpoint_url>")

credentials += Credentials("GitLab Virtual Registry", "<host>", "<username>", "<token>")
  • <endpoint_url>: Maven 가상 레지스트리 URL. 예: https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>, 여기서 <registry_id>는 Maven 가상 레지스트리의 ID입니다.
  • <host>: 프로토콜 스키마 또는 포트 없이 <endpoint_url>에 있는 호스트. 예: gitlab.example.com.
  • <username>: 사용자 이름.
  • <token>: 구성된 토큰.

Credentials의 첫 번째 인수가 "GitLab Virtual Registry"인지 확인하세요. 이 영역 이름은 Maven 가상 레지스트리가 보내는 Basic Auth 영역과 정확히 일치해야 합니다.

문제 해결#

Maven 가상 레지스트리를 사용할 때 다음 문제가 발생할 수 있습니다.

오류: gitlab.example.com:443에 연결 실패: 연결 시간 초과#

다음과 같이 가상 레지스트리를 통해 Maven 의존성을 가져올 때 간헐적인 연결 시간 초과 오류가 발생할 수 있습니다:

Connect to gitlab.example.com:443 failed: Connect timed out

이 문제는 업스트림 레지스트리 URL이 로컬 네트워크 주소로 확인될 때 GitLab Self-Managed 인스턴스에서 발생할 수 있습니다. 기본적으로 GitLab은 보안상의 이유로 로컬 네트워크 주소에 대한 아웃바운드 요청을 차단합니다.

이 문제를 해결하려면:

  1. 오른쪽 상단 모서리에서 관리자를 선택합니다.
  2. 왼쪽 사이드바에서 설정 > 네트워크를 선택합니다.
  3. 아웃바운드 요청을 확장합니다.
  4. 웹훅 및 통합에서 로컬 네트워크로의 요청 허용 확인란을 선택합니다.
  5. 선택 사항. 모든 로컬 네트워크 요청을 허용하는 대신 특정 주소만 허용하려면, 훅 및 통합이 액세스할 수 있는 로컬 IP 주소 및 도메인 이름에서 업스트림 레지스트리의 호스트 이름 또는 IP 주소를 추가합니다.
  6. 변경 사항 저장을 선택합니다.

자세한 내용은 로컬 네트워크에 요청 허용을 참조하세요.

Maven 가상 레지스트리

원문 보기
요약

이 기능의 사용 가능 여부는 기능 플래그에 의해 제어됩니다. Maven 가상 레지스트리는 GitLab에서 여러 외부 레지스트리의 패키지를 관리하고 배포하기 위한 단일하고 잘 알려진 URL을 사용합니다. Maven 가상 레지스트리를 사용하여 다음을 수행할 수 있습니다:

히스토리
Feature flag

이 기능의 사용 가능 여부는 기능 플래그에 의해 제어됩니다. 자세한 내용은 히스토리를 참조하세요. 이 기능은 베타로 제공됩니다. 이 기능을 사용하기 전에 설명서를 주의 깊게 검토하세요.

Maven 가상 레지스트리는 GitLab에서 여러 외부 레지스트리의 패키지를 관리하고 배포하기 위한 단일하고 잘 알려진 URL을 사용합니다.

Maven 가상 레지스트리를 사용하여 다음을 수행할 수 있습니다:

  • 가상 레지스트리 생성
  • 가상 레지스트리를 공개 및 비공개 업스트림 레지스트리에 연결
  • 구성된 업스트림에서 패키지를 가져오도록 Maven 클라이언트 구성
  • 사용 가능한 업스트림에 대한 캐시 항목 관리

이 접근 방식은 시간이 지남에 따라 더 나은 패키지 성능을 제공하고, Maven 패키지를 더 쉽게 관리할 수 있게 합니다.

가상 레지스트리 및 업스트림 레지스트리 관리에 대한 일반 정보는 가상 레지스트리를 참조하세요.

사전 요구 사항#

Maven 가상 레지스트리를 사용하기 전에:

Maven 가상 레지스트리를 사용할 때는 다음 제한 사항에 주의하세요:

  • 최상위 그룹당 최대 20개의 Maven 가상 레지스트리를 생성할 수 있습니다.
  • 특정 Maven 가상 레지스트리에 최대 20개의 업스트림만 설정할 수 있습니다.
  • 기술적인 이유로 인해, 오브젝트 스토리지 구성에서 설정된 값에 관계없이 proxy_download 설정이 강제로 활성화됩니다.
  • Geo 지원이 구현되지 않았습니다. 이슈 473033에서 개발 현황을 추적할 수 있습니다.

가상 레지스트리 관리#

히스토리
  • Introduced in GitLab 18.5 with a flag named ui_for_virtual_registries. Enabled by default.
  • Changed in GitLab 18.6 to a flag named maven_virtual_registry. Enabled by default. Feature flag ui_for_virtual_registries removed.

그룹에 대한 Maven 가상 레지스트리를 관리합니다.

API를 사용할 수도 있습니다.

Maven 가상 레지스트리 생성#

Maven 가상 레지스트리를 생성하려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다. 이 그룹은 최상위 수준이어야 합니다.
  2. 배포 > 가상 레지스트리를 선택합니다.
  3. 다음 경우에 따라:
    • 기존 레지스트리가 있는 경우, 레지스트리 생성을 선택합니다. 드롭다운 목록에서 Maven을 선택합니다.
    • 기존 레지스트리가 없는 경우, 드롭다운 목록에서 Maven을 선택합니다. 그런 다음 레지스트리 생성을 선택합니다.
  4. 이름과 선택적 설명을 입력합니다.
  5. 레지스트리 생성을 선택합니다.

업스트림 레지스트리 관리#

가상 레지스트리의 업스트림 Maven 레지스트리를 관리합니다.

Maven 업스트림 레지스트리 생성#

가상 레지스트리에 연결할 Maven 업스트림 레지스트리를 생성합니다.

사전 요구 사항:

Maven 업스트림 레지스트리를 생성하려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 그룹을 찾습니다. 이 그룹은 최상위 수준이어야 합니다.

  2. 배포 > 가상 레지스트리를 선택합니다.

  3. 레지스트리 유형에서 레지스트리 보기를 선택합니다.

  4. 레지스트리 탭에서 레지스트리를 선택합니다.

  5. 업스트림 추가를 선택합니다. 가상 레지스트리에 기존 업스트림이 있는 경우, 드롭다운 목록에서 다음 중 하나를 선택합니다:

    • 새 업스트림 생성하여 업스트림을 구성합니다.
    • 기존 업스트림 연결 > 기존 업스트림 선택.
      1. 드롭다운 목록에서 업스트림을 선택합니다.
      2. 선택 사항. 생성하기 전에 업스트림 연결을 테스트하려면 업스트림 테스트를 선택합니다.
      3. 업스트림 추가를 선택합니다.
  6. 필드를 작성합니다.

    • 사용자 이름비밀번호를 모두 포함하거나 둘 다 포함하지 않아야 합니다. 설정하지 않으면 공개(익명) 요청이 업스트림 접근에 사용됩니다.

    • 업스트림을 Maven Central에 연결하려면, 업스트림 URL로 다음을 사용합니다:

      https://repo1.maven.org/maven2
      
    • 아티팩트 캐싱 기간메타데이터 캐싱 기간은 기본적으로 24시간입니다. 캐시 항목 확인을 비활성화하거나 Maven Central을 사용하는 경우 0으로 설정합니다.

    • 생성하기 전에 업스트림 연결을 테스트하려면 업스트림 테스트를 선택합니다.

  7. 업스트림 생성을 선택합니다.

캐시 유효성 설정에 대한 자세한 내용은 캐시 유효 기간 설정을 참조하세요.

Maven 가상 레지스트리 사용#

가상 레지스트리를 생성한 후에는 가상 레지스트리를 통해 의존성을 가져오도록 Maven 클라이언트를 구성해야 합니다.

Maven 클라이언트 구성#

Maven 가상 레지스트리는 다음 Maven 클라이언트를 지원합니다:

Maven 클라이언트 구성에서 가상 레지스트리를 선언해야 합니다.

모든 클라이언트는 인증이 필요합니다. 클라이언트 인증을 위해 사용자 지정 HTTP 헤더 또는 Basic Auth를 사용할 수 있습니다. 각 클라이언트에 대해 아래 구성 중 하나를 사용해야 합니다.

토큰 유형 이름은 다음이어야 함 토큰
Personal access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group deploy token Deploy-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
CI/CD Job token Job-Token ${CI_JOB_TOKEN}
OAuth 2.0 token Authorization Bearer <your_oauth_token>

settings.xml 파일에 다음 섹션을 추가합니다.

<settings>
  <servers>
    <server>
      <id>gitlab-maven</id>
      <configuration>
        <httpHeaders>
          <property>
            <name>REPLACE_WITH_NAME</name>
            <value>REPLACE_WITH_TOKEN</value>
          </property>
        </httpHeaders>
      </configuration>
    </server>
  </servers>
</settings>

mvn 애플리케이션에서 가상 레지스트리를 두 가지 방법으로 구성할 수 있습니다:

  • 기본 레지스트리(Maven central) 위에 추가 레지스트리로 구성. 이 구성에서는 가상 레지스트리와 기본 레지스트리 모두에 있는 프로젝트 의존성을 선언된 레지스트리 중 어디에서든 가져올 수 있습니다.
  • 기본 레지스트리(Maven central)를 대체하는 방식으로 구성. 이 구성에서는 가상 레지스트리를 통해 의존성을 가져옵니다. 필요한 공개 의존성을 누락하지 않으려면 Maven Central을 가상 레지스트리의 마지막 업스트림으로 구성해야 합니다.

Maven 가상 레지스트리를 추가 레지스트리로 구성하려면, pom.xml 파일에 repository 요소를 추가합니다:

<repositories>
  <repository>
    <id>gitlab-maven</id>
    <url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id></url>
  </repository>
</repositories>
  • <id>: settings.xml에서 사용된 <server>의 동일한 ID.
  • <registry_id>: Maven 가상 레지스트리의 ID.

Maven 가상 레지스트리를 기본 레지스트리 대체로 구성하려면, settings.xmlmirrors 요소를 추가합니다:

<settings>
  <servers>
    ...
  </servers>
  <mirrors>
    <mirror>
      <id>central-proxy</id>
      <name>GitLab proxy of central repo</name>
      <url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id></url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>
  • <registry_id>: Maven 가상 레지스트리의 ID.
토큰 유형 이름은 다음이어야 함 토큰
Personal access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group deploy token Deploy-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group access token Private-Token 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
CI/CD Job token Job-Token ${CI_JOB_TOKEN}
OAuth 2.0 token Authorization Bearer <your_oauth_token>

GRADLE_USER_HOME 디렉토리에 다음 내용의 gradle.properties 파일을 생성합니다:

gitLabPrivateToken=REPLACE_WITH_YOUR_TOKEN

build.gradlerepositories 섹션을 추가합니다.

  • Groovy DSL에서:

    repositories {
        maven {
            url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>"
            name "GitLab"
            credentials(HttpHeaderCredentials) {
                name = 'REPLACE_WITH_NAME'
                value = gitLabPrivateToken
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
    }
    
  • Kotlin DSL에서:

    repositories {
        maven {
            url = uri("https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>")
            name = "GitLab"
            credentials(HttpHeaderCredentials::class) {
                name = "REPLACE_WITH_NAME"
                value = findProperty("gitLabPrivateToken") as String?
            }
            authentication {
                create("header", HttpHeaderAuthentication::class)
            }
        }
    }
    
  • <registry_id>: Maven 가상 레지스트리의 ID.

토큰 유형 사용자 이름은 다음이어야 함 토큰
Personal access token 사용자의 사용자 이름 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group deploy token 배포 토큰의 사용자 이름 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
Group access token 액세스 토큰에 연결된 사용자의 사용자 이름 토큰을 그대로 붙여넣거나 환경 변수를 정의하여 토큰을 저장합니다.
CI/CD Job token gitlab-ci-token sys.env.get("CI_JOB_TOKEN").get

SBT의 인증은 기본 HTTP 인증을 기반으로 합니다. 이름과 비밀번호를 제공해야 합니다.

build.sbt에 다음 줄을 추가합니다:

resolvers += ("gitlab" at "<endpoint_url>")

credentials += Credentials("GitLab Virtual Registry", "<host>", "<username>", "<token>")
  • <endpoint_url>: Maven 가상 레지스트리 URL. 예: https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>, 여기서 <registry_id>는 Maven 가상 레지스트리의 ID입니다.
  • <host>: 프로토콜 스키마 또는 포트 없이 <endpoint_url>에 있는 호스트. 예: gitlab.example.com.
  • <username>: 사용자 이름.
  • <token>: 구성된 토큰.

Credentials의 첫 번째 인수가 "GitLab Virtual Registry"인지 확인하세요. 이 영역 이름은 Maven 가상 레지스트리가 보내는 Basic Auth 영역과 정확히 일치해야 합니다.

문제 해결#

Maven 가상 레지스트리를 사용할 때 다음 문제가 발생할 수 있습니다.

오류: gitlab.example.com:443에 연결 실패: 연결 시간 초과#

다음과 같이 가상 레지스트리를 통해 Maven 의존성을 가져올 때 간헐적인 연결 시간 초과 오류가 발생할 수 있습니다:

Connect to gitlab.example.com:443 failed: Connect timed out

이 문제는 업스트림 레지스트리 URL이 로컬 네트워크 주소로 확인될 때 GitLab Self-Managed 인스턴스에서 발생할 수 있습니다. 기본적으로 GitLab은 보안상의 이유로 로컬 네트워크 주소에 대한 아웃바운드 요청을 차단합니다.

이 문제를 해결하려면:

  1. 오른쪽 상단 모서리에서 관리자를 선택합니다.
  2. 왼쪽 사이드바에서 설정 > 네트워크를 선택합니다.
  3. 아웃바운드 요청을 확장합니다.
  4. 웹훅 및 통합에서 로컬 네트워크로의 요청 허용 확인란을 선택합니다.
  5. 선택 사항. 모든 로컬 네트워크 요청을 허용하는 대신 특정 주소만 허용하려면, 훅 및 통합이 액세스할 수 있는 로컬 IP 주소 및 도메인 이름에서 업스트림 레지스트리의 호스트 이름 또는 IP 주소를 추가합니다.
  6. 변경 사항 저장을 선택합니다.

자세한 내용은 로컬 네트워크에 요청 허용을 참조하세요.