반응형
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. ✅ 정리
- 공통 모듈 생성:
- Maven 프로젝트로 생성 후 코드를 작성.
- GitHub Packages 설정:
pom.xml
의distributionManagement
와settings.xml
에 인증 정보 추가.
- GitHub Actions로 자동 배포:
- Push 시 자동으로 GitHub Packages에 배포되도록 설정.
- 다른 프로젝트에서 사용:
- 저장소 정보를 추가한 뒤, 의존성을 추가.
구현 참조: 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 |