728x90
Github package 란?
Github 문서 설명
GitHub Packages is a software package hosting service that hosts software packages privately or publicly for designated users and makes them available as dependencies in your project.
깃허브 패키지는 비공개/공개적으로 설계된 소프트웨어를 호스트하고 프로젝트에 의존성으로 사용가능하게끔 만들어진 소프트웨어 패키지 호스팅 서비스 이다.
- 여기서 호스팅은 서버를 빌리는 행위보다도, 제공한다 정도로 해석하는게 맞지 않을까 싶다.
Maven 으로 Github 패키지 구성
- Github PAI(Personal Access Token) 발행
- package 발행을 위한 settings.xml 구성 및 pom.xml 수정
- 패키지 배포
Github PAI 발행
- PAI 최소 scope 설정 입니다.
- 발행을 위해 write 까지 필요합니다.
settings.xml 구성 및 pom.xml 수정
문서에서는 `~/.m2/settings.xml` 경로에 settings.xml 파일을 구성하라고 설명하고 있습니다. 상대 경로이기에 프로젝트 루트를 기준으로 파일 생성을 하면 되겠구나 라고 생각하였지만 intellij 에서는 특정 경로(경로 수정 가능)를 필요로 합니다.
(평소 gradle 을 통해 관리했던 터라 maven 사용자들에게는 익숙한 경로일 수 도 있겠네요.)
settings.xml 경로 확인
- `ctrl + alt +s` 로 intellij 설정을 열어 maven 을 검색합니다.
- `User settings file` 설정에서 settings.xml 파일의 경로를 명시하고 있습니다.
- optional - overide 를 체크하여 경로 수정이 가능합니다.
- 대신 settings.xml 에는 PAI 정보가 포함됨으로 반드시 .gitignore 에 추가하여 관리해야 할 것입니다.
settings.xml 작성
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<activeProfiles>
<activeProfile>github</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>github</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
</repository>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<servers>
<server>
<id>github</id>
<username>USERNAME</username>
<password>TOKEN</password>
</server>
</servers>
</settings>
- 위에서 아래 해당되는 내용을 수정합니다.
- OWNER : 레포지토리 주인 명
- REPOSITORY : 레포지토리 명
- USERNAME : github 계정 명
- TOKEN : 위에서 언급했던 PAI
pom.xml 수정
<project..>
...
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub OWNER Apache Maven Packages</name>
<url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
</repository>
</distributionManagement>
...
</project>
- 위에서 아래 해당되는 내용을 수정합니다.
- OWNER : 레포지토리 주인 명
- REPOSITORY : 레포지토리 명
패키지 발행
명령어 사용
mvn deploy
intellij maven plugin 사용
참고
- Github package 설명
- 호스팅 뜻 위키
- Github package registry maven 설명
의문점
다양한 패키지를 같은 레포지토리에 발행
문서에서는 여러개의 패키지들을 같은 레포지토리에 발행하고 싶다면 distributionManagement 태그내에 URL 을 포함하여 작성하면 된다고 설명하고 있습니다.
위 내용을 토대로 여러개의 패키지를 발행하지 않을 것 이어서 distributionManagement 태그를 미작성하였는데 pom 에 repository 내용이 명시되지 않았다고 오류가 발생하였습니다. 이유를 아시는 분이 계시면 댓글로 말씀해주세요!
태그 작성 가능한듯 보인다?
문서에서 발행시 OWNER/test 라는 식으로 발행된다고 명시되어있습니다. `/test` 부분이 태그라고 생각되는데 만약 태그가 맞다면 어떻게 명시해야 하는지 아시는분 계시면 댓글로 말씀해주세요!
name 태그는 어떻게 동작되는가?
distributionManagement 내부에 `repository.name` 태그가 포함되는데 해당 태그는 어떻게 동작되는지 아시는분 계시면 댓글로 말씀해주세요!
예제
728x90
'Git > GitHub' 카테고리의 다른 글
[GitHub] Github-Action 에 환경변수에 multiline string 을 사용하기 위해 어떻게 해야 할까? (1) | 2024.04.14 |
---|