업무 중 Git으로 협업하다 보면, 동료가 새 패키지/클래스를 올린 뒤 내가 pull 했을 때 프로젝트가 바로 실행되지 않거나 오류가 나는 일이 잦다. 이때 Run Configurations > Maven Build에서 빌드를 다시 돌리면 해결되곤 한다. 특히 clean package 와 clean install 중 무엇을 써야 하는지 헷갈리기 쉬워, 실제 현업 흐름에 맞춰 핵심만 정리했다.
✅ 1. “Maven/패키지/클래스”가 무엇이길래 빌드가 필요할까?
- 메이븐(Maven): POM(XML) 기반의 빌드/의존성 관리 도구
- 패키지(package): 코드가 들어있는 폴더 구조/이름공간 (예: com.example.app).
- 클래스 파일(.class): *.java를 컴파일해서 생기는 실행 파일(바이트코드).
- Git에는 보통 소스(.java)만 올라온다 → 내가 pull 해도 .class는 내 PC에서 새로 만들어야 한다.
즉, 새 소스가 오면 내 로컬에서 “컴파일”를 다시 해야 실행 가능!
✅ 2. 왜 ‘다시 빌드’를 안 하면 문제가 날까?
- 소스/리소스 불일치: 내 PC의 예전 .class 와 새 .java 가 맞지 않음 → ClassNotFoundException, 빈 주입 실패 등.
- 의존성/코드생성 변화: 팀원이 pom.xml을 바꾸거나 Lombok/QueryDSL 같은 코드 생성 단계를 추가했을 수 있음 → 빌드 단계 재실행 필요.
- 리소스 처리/프로필 반영: 환경별(yml/properties) 설정이 Maven 단계에서 반영되므로 그냥 실행만으론 부족.
안전 루틴 : git pull → Maven Update(Alt+F5) → 빌드(clean …)
✅ 3. Run Configurations
📌 Run Configurations란?
- 자주 쓰는 실행 명령을 버튼 하나로 저장해 두는 실행 저장소
- 이클립스 및 인텔리제이가 무엇을 실행할지(도구: Maven/Java 등), 어디서(프로젝트 루트), 어떤 옵션으로(Goals/프로필/플래그) 실행할지를 기억해 둡니다.
📌 자주 사용하는 항목들
- Base directory: 프로젝트 루트
- Goals: clean package, clean install 같이 목표 단계만 적기
- Profiles: dev, test 등 필요 시
- Skip Tests: 체크 시 테스트 실행 생략(= -DskipTests)
✅ 4. clean, package, install
- clean: 지난 빌드물 지우기(target/ 폴더 정리)
- package: 내 프로젝트 안에서 결과물(JAR/WAR) 만들기
- install: 만든 결과물을 내 PC의 Maven 창고(~/.m2)에 저장 → 다른 모듈/프로젝트가 내 결과물을 의존성으로 바로 사용 가능
📌 사용 용도
- clean package
- 목적: 내 프로젝트만 실행/배포해볼 때 결과물 만들기
- 한계: 다른 모듈이 의존성으로 쓰려면 부족(창고에 올리지 않음)
- clean install
- 목적: 결과물을 로컬 창고에 올려 다른 모듈이 즉시 사용하도록 함
- 멀티 모듈·상/하위 모듈 의존이 있으면 install을 써야 의존성이 정상 인식됨
'개발' 카테고리의 다른 글
| [Spring MVC] @RequestParam vs @RequestMapping (1) | 2025.08.16 |
|---|---|
| [Spring/Web] 400 에러, GET vs POST (0) | 2025.08.12 |
| [DB SQL] JOIN · WITH 절을 활용한 쿼리 최적화 (0) | 2025.07.31 |
| [DB] 인덱스를 활용한 DB 쿼리 성능 개선 (1) | 2025.07.30 |
| [Spring Boot] 카카오API를 활용한 검색 기능 구현 (GET/POST 방식) (0) | 2025.07.13 |