이번에 무료 저장소를 찾아보다가 깃허브 패키지 레지스트리를 쓰게 됐는데요.
관련 문서가 부족하진 않는데 그렇다고 넘칠 정도로 많은건 아니더군요.
그래서 며칠간 삽질하다가 알아낸 메이븐 레포 팁들을 공유합니다.
1. SNAPSHOT, RELEASE 둘다 배포가 안되는 경우 (400또는 401 에러)
pom.xml에 배포지 경로 설정을 잘못했을 가능성이 있습니다.
공식 문서에서 알려주는 배포지 경로를 그대로 넣으면 안됩니다.
자신의 계정과 사용할 레포지토리의 이름을 넣어야 합니다. (<url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>)
저는 아래처럼 설정했습니다.
또는 인증 설정을 안 했을 경우도 있는데요. 이건 공식 문서 보고 그대로 따라하면서
깃허브 계정 비밀번호 대신 Personal Access Token을 하나 발급받아 비밀번호 필드에 넣으면 됩니다.
2. RELEASE는 배포가 되는데 SNAPSHOT은 배포가 안되는 경우 (400에러)
메이븐 클라이언트 버전이 너무 높은 경우 발생합니다.
관련 스레드를 찾아보니 메이븐 버전을 낮추면 된다고 합니다. (근데 사람마다 의견이 다 다름)
https://github.community/t5/GitHub-API-Development-and/GitHub-package-registry-as-Maven-repo-trouble-uploading-artifact/td-p/28832/page/2
저 같은 경우 그냥 생각없이 maven:3-jdk-8 이미지(최신버전)를 사용해서 빌드와 배포를 했는데.
maven:3.3-jdk-8이미지를 사용하니 잘 동작했습니다.
3. 이미 배포한 RELEASE버전으로 재배포가 안되는 경우
깃허브 레지스트리 설정이 원래 그렇습니다.
버전을 수정해서 겹치지 않는 버전으로 재배포를 해야합니다.
4. 이미 배포한 SNAPSHOT버전으로 재배포가 안되는 경우
버전명의 SNAPSHOT이 소문자가 아닌지 확인해보세요.
1.0-SNAPSHOT은 재배포가 가능하지만, 1.0-snapshot은 RELEASE로 취급해 재배포가 불가능합니다.
(그런데 중복 체크는 대소문자 안가리고 SNAPSHOT이랑 같이 하네요)
Package Registry는 패키지 관리용으로 쓰는건가요?
넵넵. 패키지 관리용으로 저장소가 필요한데 대부분 private 저장소는 유료라서 (아직은) 무제한 무료인 깃허브 패키지 레지스트리를 쓰고 있습니다.