Maven 빌드 명령어는 크게 라이프사이클(Lifecycle) 단계와 **옵션(Flags)**으로 나뉩니다. 개발할 때 가장 자주 사용하는 명령어들과 중요한 옵션들을 정리해 드릴게요.
1. 주요 라이프사이클 명령어 (순서대로 실행됨)
Maven의 기본 라이프사이클은 단계적입니다. 예를 들어 mvn install을 실행하면 그 이전 단계인 compile, test, package가 모두 자동으로 실행됩니다.
| 명령어 | 설명 | 주요 용도 |
| mvn clean | 빌드 결과물(target 폴더)을 삭제합니다. | 이전 빌드의 잔여물 때문에 발생하는 오류를 방지하기 위해 사용합니다. |
| mvn validate | 프로젝트 상태와 정보가 올바른지 검사합니다. | – |
| mvn compile | src/main/java의 소스 코드를 컴파일하여 target/classes에 생성합니다. | 코드 문법 오류 체크 시 사용합니다. |
| mvn test | src/test/java의 테스트 코드를 컴파일하고 실행(JUnit 등)합니다. | 단위 테스트를 수행할 때 사용합니다. |
| mvn package | 컴파일된 코드와 리소스를 묶어 배포 가능한 파일(jar, war 등)로 만듭니다. | 서버에 배포할 파일을 생성할 때 사용합니다. |
| mvn verify | 통합 테스트 결과를 검사하고 품질 기준을 충족하는지 확인합니다. | – |
| mvn install | 생성된 패키지(jar/war)를 **로컬 저장소(~/.m2/repository)**에 저장합니다. | 내 컴퓨터의 다른 프로젝트에서 이 라이브러리를 의존성으로 사용할 때 필수입니다. |
| mvn deploy | 패키지를 **원격 저장소(Nexus, Artifactory 등)**에 업로드합니다. | 팀원들과 라이브러리를 공유하거나 실서버 배포 파이프라인에서 사용합니다. |
2. 자주 사용하는 명령어 조합
실무에서는 보통 단일 명령어보다 조합해서 많이 사용합니다.
-
mvn clean install (가장 많이 씀)
-
기존 빌드 파일을 싹 지우고(clean), 처음부터 컴파일/테스트/패키징하여 로컬 저장소에 등록(install)합니다.
-
가장 확실하게 빌드하는 방법입니다.
-
-
mvn clean package
-
깨끗하게 지우고 배포 파일(jar/war)만 만듭니다. (로컬 저장소 등록 안 함)
-
CI/CD 서버(Jenkins, Github Actions)에서 주로 사용합니다.
-
3. 필수 옵션 (Flags)
명령어 뒤에 붙여서 빌드 동작을 제어합니다.
1) 테스트 스킵 (빌드 속도 향상)
테스트 코드가 실패해도 강제로 빌드하거나, 시간 단축을 위해 테스트를 건너뛸 때 사용합니다.
-
-DskipTests
-
테스트 실행만 건너뜁니다. (테스트 코드는 컴파일함)
-
예: mvn clean install -DskipTests
-
-
-Dmaven.test.skip=true
-
테스트 코드 컴파일과 실행을 모두 건너뜁니다. (더 강력함)
-
예: mvn clean package -Dmaven.test.skip=true
-
2) 의존성 관련
-
-U (Force Update)
-
스냅샷(Snapshot) 의존성을 강제로 업데이트합니다. 팀원이 라이브러리를 수정해서 올렸는데 내 컴퓨터에서 반영이 안 될 때 사용합니다.
-
예: mvn clean install -U
-
-
-o (Offline)
-
인터넷 연결 없이 로컬 저장소에 있는 라이브러리만으로 빌드합니다. (네트워크가 느릴 때 빠름)
-
예: mvn clean install -o
-
3) 디버깅 및 로그
-
-X (Debug)
-
상세한 디버그 로그를 출력합니다. 빌드 에러의 구체적인 원인을 찾을 때 씁니다.
-
예: mvn clean install -X
-
4) 기타 유용한 옵션
-
-P [프로파일ID]
-
pom.xml에 정의된 특정 프로파일(Profile)을 활성화합니다. (예: 개발용/운영용 설정 분리 시)
-
예: mvn clean package -P prod
-
-
-T [쓰레드수]
-
병렬 빌드를 수행하여 속도를 높입니다. (1C는 코어당 1개)
-
예: mvn clean install -T 4 (4개 쓰레드로 빌드)
-
요약: 언제 무엇을 쓸까?

-
로컬에서 개발 후 실행해볼 때: mvn clean install
-
테스트가 너무 오래 걸려서 일단 빌드 파일만 필요할 때: mvn clean package -DskipTests
-
의존성 라이브러리를 못 찾을 때: mvn clean install -U