[JAVA] Spring 공통 모듈을 패키지화하고 GitHub Packages에 등록하는 방법

2024. 12. 6. 18:31· Java
목차
  1. 1. 🌱 공통 모듈 프로젝트 생성
  2. 1️⃣ 프로젝트 구조 만들기
  3. 2️⃣ 공통 모듈 코드 작성
  4. 2. 📜 Maven pom.xml 설정
  5. 1️⃣ 기본 POM 설정
  6. 3. 🗂 GitHub Packages에 배포하기
  7. 1️⃣ distributionManagement 설정
  8. 2️⃣ 인증 정보 추가 (settings.xml)
  9. 3️⃣ GitHub Actions로 자동 배포 설정
  10. 4. 🌟 다른 프로젝트에서 공통 모듈 사용하기
  11. 1️⃣ pom.xml에 의존성 추가
  12. 5. ✅ 정리
반응형

Spring Boot 프로젝트를 진행하다 보면, 여러 프로젝트에서 재사용할 수 있는 공통 모듈을 패키지화해서 관리하고 싶을 때가 많습니다. 이번 포스팅에서는 공통 모듈을 Maven 패키지로 만들어 GitHub Packages에 등록하고, 이를 다른 프로젝트에서 사용하는 방법을 처음부터 끝까지 자세히 설명합니다.


1. 🌱 공통 모듈 프로젝트 생성

1️⃣ 프로젝트 구조 만들기

Spring Boot 공통 모듈 프로젝트를 생성합니다. Maven 프로젝트로 설정하는 것이 중요합니다.

Maven 프로젝트 생성 명령어:

mvn archetype:generate -DgroupId=com.example -DartifactId=springboot-common-modules -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

디렉토리 구조:

springboot-common-modules
├── src/main/java/com/example/common
│   └── StringUtils.java
├── src/test/java/com/example/common
├── pom.xml

2️⃣ 공통 모듈 코드 작성

공통적으로 사용할 코드를 src/main/java 폴더에 추가합니다.

예: StringUtils 클래스

package com.example.common;

public class StringUtils {
    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }
}

2. 📜 Maven pom.xml 설정

1️⃣ 기본 POM 설정

프로젝트의 pom.xml 파일에 아래 내용을 추가합니다.

POM 파일 구조:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>springboot-common-modules</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>Spring Boot Common Modules</name>
    <description>Reusable Spring Boot components</description>

    <dependencies>
        <!-- 필요 시 의존성 추가 -->
    </dependencies>
</project>

3. 🗂 GitHub Packages에 배포하기

1️⃣ distributionManagement 설정

GitHub Packages로 배포하려면 pom.xml 파일에 아래 내용을 추가해야 합니다.

<distributionManagement>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/<GitHub-사용자명>/<저장소-이름></url>
    </repository>
</distributionManagement>
  • id: github로 설정.
  • url: GitHub Packages URL을 <GitHub 사용자명>과 <저장소 이름>으로 대체하여 입력.

2️⃣ 인증 정보 추가 (settings.xml)

GitHub Packages에 업로드하려면 ~/.m2/settings.xml 파일에 인증 정보를 추가합니다.

settings.xml 내용:

<settings>
    <servers>
        <server>
            <id>github</id>
            <username>GITHUB_USERNAME</username>
            <password>GITHUB_PERSONAL_ACCESS_TOKEN</password>
        </server>
    </servers>
</settings>
  • id: github로 설정 (POM의 distributionManagement와 동일).
  • username: GitHub 사용자명.
  • password: GitHub Personal Access Token.

3️⃣ GitHub Actions로 자동 배포 설정

1️⃣ .github/workflows/deploy.yml 작성

GitHub Actions를 이용해 Push할 때 자동으로 배포되도록 설정합니다.

name: Deploy Maven Package

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Set up Java
      uses: actions/setup-java@v3
      with:
        distribution: 'temurin'
        java-version: '17'

    - name: Cache Maven dependencies
      uses: actions/cache@v3
      with:
        path: ~/.m2
        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
        restore-keys: ${{ runner.os }}-maven

    - name: Deploy to GitHub Packages
      run: mvn deploy
      env:
        GITHUB_USERNAME: ${{ secrets.GITHUB_ACTOR }}
        GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4. 🌟 다른 프로젝트에서 공통 모듈 사용하기

1️⃣ pom.xml에 의존성 추가

GitHub Packages에 업로드한 공통 모듈을 사용하는 프로젝트에서 아래 내용을 추가합니다.

GitHub Packages 저장소 정보 추가:

<repositories>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/<GitHub-사용자명>/<저장소-이름></url>
    </repository>
</repositories>

공통 모듈 의존성 추가:

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>springboot-common-modules</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

5. ✅ 정리

  1. 공통 모듈 생성:
    • Maven 프로젝트로 생성 후 코드를 작성.
  2. GitHub Packages 설정:
    • pom.xml의 distributionManagement와 settings.xml에 인증 정보 추가.
  3. GitHub Actions로 자동 배포:
    • Push 시 자동으로 GitHub Packages에 배포되도록 설정.
  4. 다른 프로젝트에서 사용:
    • 저장소 정보를 추가한 뒤, 의존성을 추가.
구현 참조: https://github.com/taehui8260/springboot-common-modules/
반응형
저작자표시 비영리 변경금지

'Java' 카테고리의 다른 글

[JAVA] @Transactional 알아보기 Part.2 #전파(Propagation)  (0) 2024.12.24
[JAVA] @Transactional 알아보기 Part.1 #프록시와 트랜잭션 동작 원리  (0) 2024.12.23
[JAVA] Java로 Excel 파일 생성 및 관리: Apache POI 사용법  (0) 2024.11.26
[JAVA] Java의 예외 계층 구조와 개념  (4) 2024.11.15
[JAVA] Java에서 예외 처리방법  (7) 2024.11.13
  1. 1. 🌱 공통 모듈 프로젝트 생성
  2. 1️⃣ 프로젝트 구조 만들기
  3. 2️⃣ 공통 모듈 코드 작성
  4. 2. 📜 Maven pom.xml 설정
  5. 1️⃣ 기본 POM 설정
  6. 3. 🗂 GitHub Packages에 배포하기
  7. 1️⃣ distributionManagement 설정
  8. 2️⃣ 인증 정보 추가 (settings.xml)
  9. 3️⃣ GitHub Actions로 자동 배포 설정
  10. 4. 🌟 다른 프로젝트에서 공통 모듈 사용하기
  11. 1️⃣ pom.xml에 의존성 추가
  12. 5. ✅ 정리
'Java' 카테고리의 다른 글
  • [JAVA] @Transactional 알아보기 Part.2 #전파(Propagation)
  • [JAVA] @Transactional 알아보기 Part.1 #프록시와 트랜잭션 동작 원리
  • [JAVA] Java로 Excel 파일 생성 및 관리: Apache POI 사용법
  • [JAVA] Java의 예외 계층 구조와 개념
TaeHuiLee
TaeHuiLee
창업, 사업, 자기개발, 운동, Web, App, Java, python, 이슈, 개발자, JavaScript, amazon, cloud server, 취업, 스펙, Android Studio, Spring, React, Node.js, 구독하면 댓글 남겨주세요.
TaeHuiLee
Developer_TaeHui
TaeHuiLee
  • 분류 전체보기 (228)
    • WEB (71)
    • Java (38)
    • APP (17)
    • 딥러닝 (2)
    • DB (5)
    • 알고리즘 (17)
    • Python (10)
    • AWS (5)
    • Git (8)
    • Docker (13)
    • 창업 (2)
    • Java Script (5)
    • 군집드론 (3)
    • C언어 (1)
    • IT 지식 (16)
    • Rust (1)
    • Tomcat (1)
    • Nginx (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • javascript
  • 관상 어플
  • 정렬
  • 알고리즘
  • 자바
  • Nuxt
  • Java
  • 강릉 맛집
  • Queue
  • python
  • 수원역 맛집
  • VUE
  • mariadb
  • GIT
  • DB
  • WSL
  • Spring
  • 오블완
  • ubuntu
  • 도커
  • 수원 맛집
  • docker
  • github
  • 서울 맛집
  • spring boot
  • 파이썬
  • 선택정렬
  • 티스토리챌린지
  • axios
  • 어플

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
TaeHuiLee
[JAVA] Spring 공통 모듈을 패키지화하고 GitHub Packages에 등록하는 방법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.