Maven 빌드 명령어

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개 쓰레드로 빌드)

요약: 언제 무엇을 쓸까?

Maven 빌드 명령어

  1. 로컬에서 개발 후 실행해볼 때: mvn clean install

  2. 테스트가 너무 오래 걸려서 일단 빌드 파일만 필요할 때: mvn clean package -DskipTests

  3. 의존성 라이브러리를 못 찾을 때: mvn clean install -U