공개 GitHub 리포지토리를 Maven 의존성으로 사용하는 방법
Source: Dev.to
Introduction
Apache Maven은 대부분의 Java 프로젝트의 핵심이며, GitHub Packages는 Maven 아티팩트를 호스팅하고 배포하는 편리한 방법을 제공합니다. 저장소가 공개되어 있더라도 원활하게 작동하도록 몇 가지 중요한 단계가 필요합니다.
GitHub Packages를 사용하면:
- 소스 코드와 함께 Maven 아티팩트 호스팅
- 패키지에 대한 접근 제어
- 저장소와 가까운 위치에 의존성 유지
- GitHub Actions와 원활한 통합
Note: GitHub Packages는 공개 Maven 패키지라도 인증이 필요합니다.
Prerequisites
- GitHub 계정
- Maven 패키지를 발행하는 공개 저장소
- 로컬에 Maven 설치
pom.xml에 대한 기본적인 이해
Step 1 – Create a GitHub Personal Access Token (PAT)
GitHub Packages는 클래식 개인 액세스 토큰만 지원합니다.
| 범위 | 목적 |
|---|---|
read:packages | 패키지를 다운로드하는 데 필요 |
write:packages | 패키지를 발행하려는 경우 필요 |
이 토큰을 안전하게 보관하세요 — Maven 비밀번호로 사용할 것입니다.
Configure Maven Credentials (settings.xml)
Maven은 ~/.m2/settings.xml에서 자격 증명을 읽습니다. 다음 내용을 포함하도록 파일을 만들거나 편집하세요:
<servers>
<server>
<id>github</id>
<username>YOUR_GITHUB_USERNAME</username>
<password>YOUR_PERSONAL_ACCESS_TOKEN</password>
</server>
</servers>
<id>값(github)이 중요합니다; Maven은 이 ID를pom.xml에 정의된 저장소와 매칭합니다.
Add the GitHub Packages Repository to pom.xml
<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
</repository>
</repositories>
Example
<url>https://maven.pkg.github.com/mewan/my-public-repo</url>
Important: 저장소 소유자 이름은 실제 사용자 이름에 대문자가 포함되어 있더라도 소문자로 입력해야 합니다.
같은 GitHub 사용자 또는 조직에서 여러 패키지를 사용해야 하는 경우 와일드카드를 사용할 수 있습니다:
<url>https://maven.pkg.github.com/OWNER/*</url>
Declare the Dependency
다음과 같이 pom.xml에 의존성을 추가합니다:
<dependency>
<groupId>com.example</groupId>
<artifactId>my-library</artifactId>
<version>1.0.0</version>
</dependency>
확인 사항:
- 패키지 버전이 GitHub Packages에 존재해야 합니다.
artifactId는 소문자여야 합니다 (GitHub에서 강제합니다).
보통대로 Maven을 실행합니다:
mvn clean install
인증 및 설정이 올바르면 Maven이 GitHub Packages에서 패키지를 다운로드하고 빌드에 포함합니다.
Common Issues
| 문제 | 설명 |
|---|---|
| 공개 패키지는 인증이 필요하지 않을 것이라고 가정 | 모든 패키지는 PAT가 필요합니다. |
settings.xml와 pom.xml 사이의 <id> 불일치 | ID는 반드시 동일해야 합니다. |
artifactId에 대문자 사용 | GitHub은 소문자 artifactId만 허용합니다. |
| GitHub Packages URL이 잘못됨 | URL이 https://maven.pkg.github.com/OWNER/REPOSITORY 형식인지 확인하세요. |
이러한 세부 사항을 재확인하면 많은 시간을 절약할 수 있습니다.
Conclusion
GitHub Packages를 Maven 레지스트리로 사용하는 것은 특히 코드가 이미 GitHub에 있을 때 의존성을 관리하는 강력한 방법입니다. 공개 패키지에 대한 인증 요구가 다소 놀라울 수 있지만, 한 번 설정하면 워크플로우가 원활하고 신뢰할 수 있습니다. 이미 GitHub Actions를 사용하고 있다면 이 설정은 CI/CD 파이프라인에 자연스럽게 통합됩니다.
Happy coding! 🚀