Skip to main content

Enterprise Server 3.15 은(는) 현재 릴리스 후보로 제공됩니다.

Gradle 레지스트리 작업

패키지를 GitHub Packages에 게시하고 GitHub Packages Gradle 레지스트리에 저장된 패키지를 Java 프로젝트의 종속성으로 사용하도록 Gradle을 구성할 수 있습니다.

참고: 사이트 관리자가 지원되는 각 패키지 유형을 사용하거나 사용하지 않도록 설정할 수 있으므로 이 패키지 유형을 인스턴스에 사용할 수 없습니다. 자세한 내용은 "엔터프라이즈에 대한 패키지 에코시스템 지원 구성"을(를) 참조하세요.

GitHub Packages 인증

GitHub Packages은(는) personal access token (classic)을(를) 사용하는 인증만 지원합니다. 자세한 내용은 "개인용 액세스 토큰 관리"을(를) 참조하세요.

프라이빗, 내부, 퍼블릭 패키지를 게시, 설치, 삭제하려면 액세스 토큰이 필요합니다.

GitHub Packages 또는 GitHub Enterprise Server API에 인증하는 데 personal access token (classic)을 사용할 수 있습니다. personal access token (classic)을(를) 만들 때 필요에 따라 토큰의 범위를 다르게 할당할 수 있습니다. personal access token (classic)의 패키지 관련 범위에 대한 자세한 내용은 "GitHub 패키지에 대한 사용 권한 정보"을 참조하세요.

GitHub Actions 워크플로 내에서 GitHub Packages 레지스트리에 인증하려면 다음을 사용할 수 있습니다.

  • 워크플로 리포지토리와 연결된 패키지를 게시하려면 GITHUB_TOKEN을 사용합니다.
  • 다른 프라이빗 리포지토리(GITHUB_TOKEN는 액세스할 수 없음)와 연결된 패키지를 설치하기 위해 최소 read:packages 범위의 personal access token (classic).

GitHub Actions 워크플로에서 사용되는 GITHUB_TOKEN에 대한 자세한 내용은 “자동 토큰 인증”을 참조하세요. Gradle에서 GITHUB_TOKEN을 사용하는 방법에 대한 자세한 내용은 “Gradle을 사용하여 Java 패키지 게시”을(를) 참조하세요.

personal access token을(를) 사용하여 인증

적절한 범위의personal access token (classic)으로 GitHub Packages에서 패키지를 게시하고 설치해야 합니다. 자세한 내용은 "GitHub 패키지 소개"을(를) 참조하세요.

personal access token (classic)을(를) 포함하도록 build.gradle 파일(Gradle Groovy) 또는 build.gradle.kts 파일(Kotlin DSL)을 편집하고 Gradle Groovy 또는 Kotlin DSL을 사용해 Gradle에서 GitHub Packages 인증을 수행할 수 있습니다. 리포지토리에서 단일 패키지 또는 여러 패키지를 인식하도록 Gradle Groovy 및 Kotlin DSL을 구성할 수도 있습니다.

REGISTRY_URL을 인스턴스의 Maven 레지스트리에 대한 URL로 바꿉니다. 인스턴스에 하위 도메인 격리가 사용 설정된 경우 maven.HOSTNAME을 사용합니다. 인스턴스에 하위 도메인 격리가 사용 설정된 경우 HOSTNAME/_registry/maven을 사용합니다. 두 경우 모두 HOSTNAME을 GitHub Enterprise Server 인스턴스의 호스트 이름으로 바꿉니다.

USERNAME을 GitHub 사용자 이름으로, TOKEN을 personal access token (classic)(으)로, REPOSITORY를 게시할 패키지가 포함된 리포지토리의 이름으로, OWNER를 리포지토리를 소유한 GitHub의 개인 계정 또는 조직의 이름으로 바꿉니다. 대문자는 지원되지 않으므로 GitHub 사용자 이름 또는 조직 이름에 대문자가 포함되어 있더라도 리포지토리 소유자에는 소문자를 사용해야 합니다.

참고: GitHub Packages는 Apache Maven의 SNAPSHOT 버전을 지원합니다. SNAPSHOT 아티팩트를 다운로드하기 위해 GitHub Packages 리포지토리를 사용하려면 사용하는 프로젝트의 POM 또는 ~/.m2/settings.xml 파일에서 스냅샷을 사용하도록 설정합니다. 예제는 "Apache Maven 레지스트리 작업"을(를) 참조하세요.

리포지토리의 단일 패키지에 Gradle Groovy를 사용하는 예제

plugins {
    id("maven-publish")
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            from(components.java)
        }
    }
}

동일한 리포지토리의 여러 패키지에 Gradle Groovy를 사용하는 예제

plugins {
    id("maven-publish") apply false
}
subprojects {
    apply plugin: "maven-publish"
    publishing {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
                credentials {
                    username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            gpr(MavenPublication) {
                from(components.java)
            }
        }
    }
}

동일한 리포지토리의 단일 패키지에 Kotlin DSL을 사용하는 예제

plugins {
    `maven-publish`
}
publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        register<MavenPublication>("gpr") {
            from(components["java"])
        }
    }
}

동일한 리포지토리의 여러 패키지에 Kotlin DSL을 사용하는 예제

plugins {
    `maven-publish` apply false
}
subprojects {
    apply(plugin = "maven-publish")
    configure<PublishingExtension> {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
                credentials {
                    username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                    password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
                }
            }
        }
        publications {
            register<MavenPublication>("gpr") {
                from(components["java"])
            }
        }
    }
}

패키지 게시

기본적으로 GitHub는 패키지와 이름이 동일한 기존 리포지토리에 패키지를 게시합니다. 예를 들어 GitHub는 OWNER/test GitHub Packages 리포지토리에 com.example.test라는 패키지를 게시합니다.

패키지를 게시한 후 GitHub에서 패키지를 볼 수 있습니다. 자세한 내용은 "패키지 보기"을(를) 참조하세요.

  1. GitHub Packages에 인증합니다. 자세한 내용은 “GitHub Packages에 인증”을 참조하세요.

  2. 패키지를 만든 후 패키지를 게시할 수 있습니다.

     gradle publish
    

게시된 패키지 사용

GitHub Packages에서 게시된 패키지를 사용하려면 패키지를 종속성으로 추가하고 프로젝트에 리포지토리를 추가합니다. 자세한 내용은 Gradle 설명서의 “종속성 선언”을 참조하세요.

  1. GitHub Packages에 인증합니다. 자세한 내용은 “GitHub Packages에 인증”을 참조하세요.

  2. build.gradle 파일(Gradle Groovy) 또는 build.gradle.kts 파일(Kotlin DSL)에 패키지 종속성을 추가합니다.

    Gradle Groovy를 사용하는 예제:

    dependencies {
        implementation 'com.example:package'
    }
    

    Kotlin DSL을 사용하는 예제:

    dependencies {
        implementation("com.example:package")
    }
    
  3. build.gradle 파일(Gradle Groovy) 또는 build.gradle.kts 파일(Kotlin DSL)에 리포지토리를 추가합니다.

    Gradle Groovy를 사용하는 예제:

    repositories {
        maven {
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") ?: System.getenv("TOKEN")
            }
       }
    }
    

    Kotlin DSL을 사용하는 예제:

    repositories {
        maven {
            url = uri("https://REGISTRY_URL/OWNER/REPOSITORY")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
    

추가 참고 자료