sggnology
하늘속에서IT
sggnology
전체 방문자
오늘
어제
  • 분류 전체보기 (83)
    • Algorithm (31)
      • Programmers (27)
      • Baekjoon (4)
    • WIKI (4)
      • VirtualBox (1)
      • Power Toys (1)
    • NodeJS (4)
      • nvm (1)
      • React (1)
      • Vue (1)
    • Dev Language (3)
      • Java (2)
      • Kotlin (1)
    • Spring Boot (17)
      • Gradle (1)
      • JPA (3)
    • DB (4)
      • MariaDB (3)
      • Redis (0)
    • Android (6)
      • Debug (3)
    • Nginx (3)
      • Debug (1)
    • Intellij (0)
    • Network (1)
    • Git (2)
      • GitHub (2)
    • Chrome Extension (0)
    • ETC (5)
      • Monitoring (2)
    • Linux (1)
      • WSL (1)
    • Visual Studio (1)
    • Side Project (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 오블완
  • mariadb
  • 레벨2
  • docker
  • 티스토리챌린지
  • DB
  • spring boot
  • 알고리즘
  • 프로그래머스
  • 레벨3
  • 연습문제
  • 안드로이드 스튜디오
  • kotlin
  • java
  • JPA
  • 고득점KIT
  • Android Studio
  • nginx
  • 고득점 Kit
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sggnology

하늘속에서IT

[Github] github packages maven 방식으로 업로드(feat. intellij, 예제)
Git/GitHub

[Github] github packages maven 방식으로 업로드(feat. intellij, 예제)

2023. 8. 24. 22:50
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 패키지 구성

  1. Github PAI(Personal Access Token) 발행
  2. package 발행을 위한 settings.xml 구성 및 pom.xml 수정
  3. 패키지 배포

 

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 패키지 소개 - GitHub Docs

GitHub Packages는 지정된 사용자에 대해 비공개로또는 공개적으로 소프트웨어 패키지를 호스트하고 패키지를 프로젝트에 종속성으로 사용할 수 있도록 하는 소프트웨어 패키지 호스팅 서비스입니

docs.github.com

  • 호스팅 뜻 위키

 

 

호스팅 - 나무위키

웹 호스팅과 같지만 서버 하나를 단독으로 사용하는 웹 호스팅이다. 서버 하나를 단독으로 사용하기에 다른 이용자의 영향을 신경쓸 필요가 없다. 서버 관리를 호스팅사에서 해주고 사용자는

namu.wiki

  • Github package registry maven 설명

 

 

Apache Maven 레지스트리 작업 - GitHub Docs

패키지를 GitHub Packages에 게시하고 GitHub Packages에 저장된 패키지를 Java 프로젝트의 종속성으로 사용하도록 Apache Maven을 구성할 수 있습니다. GitHub Packages is available with GitHub Free, GitHub Pro, GitHub Free f

docs.github.com

 


 

의문점

 

다양한 패키지를 같은 레포지토리에 발행

문서에서는 여러개의 패키지들을 같은 레포지토리에 발행하고 싶다면 distributionManagement 태그내에 URL 을 포함하여 작성하면 된다고 설명하고 있습니다.

위 내용을 토대로 여러개의 패키지를 발행하지 않을 것 이어서 distributionManagement  태그를 미작성하였는데 pom 에 repository 내용이 명시되지 않았다고 오류가 발생하였습니다. 이유를 아시는 분이 계시면 댓글로 말씀해주세요!

 

태그 작성 가능한듯 보인다?

문서에서 발행시 OWNER/test 라는 식으로 발행된다고 명시되어있습니다. `/test` 부분이 태그라고 생각되는데 만약 태그가 맞다면 어떻게 명시해야 하는지 아시는분 계시면 댓글로 말씀해주세요!

 

name 태그는 어떻게 동작되는가?

distributionManagement 내부에 `repository.name` 태그가 포함되는데 해당 태그는 어떻게 동작되는지 아시는분 계시면 댓글로 말씀해주세요!

 


 

예제

 

GitHub - sggnology/blog-github-registry-example

Contribute to sggnology/blog-github-registry-example development by creating an account on GitHub.

github.com

 

728x90

'Git > GitHub' 카테고리의 다른 글

[GitHub] Github-Action 에 환경변수에 multiline string 을 사용하기 위해 어떻게 해야 할까?  (1) 2024.04.14
    'Git/GitHub' 카테고리의 다른 글
    • [GitHub] Github-Action 에 환경변수에 multiline string 을 사용하기 위해 어떻게 해야 할까?
    sggnology
    sggnology
    하늘은 파란색이니까 내 삶도 파란색이길 ㅎㅎ

    티스토리툴바