반응형
🧱 1. 기본 구조: Maven 명령어
Maven 명령어는 일반적으로 다음 구조를 가집니다:
mvn [목표(goal)] [옵션(option)]
여기서 clean, package, -DskipTests 각각의 의미는 다음과 같습니다.
🧹 2. clean 단계 — 이전 빌드 결과 정리
clean은 이전 빌드 산출물(예: class, jar, war 파일 등) 을 삭제합니다.
즉, target 디렉터리를 깨끗하게 지워주는 역할을 합니다.
- 삭제되는 예시:
-
target/
├── classes/
├── test-classes/
├── *.jar
├── *.war
└── ... - 목적: 이전 빌드의 잔여 파일이 새 빌드에 영향을 주지 않도록 하기 위함입니다.
📦 3. package 단계 — 컴파일 및 패키징
package는 Maven의 라이프사이클 빌드 단계 중 하나로,
프로젝트를 JAR/WAR 등으로 패키징하는 단계입니다.
패키징 과정은 다음 순서로 수행됩니다:
| 순서 | 단계 | 설명 |
| 1 | validate | 프로젝트가 유효한지 확인 (필요한 파일, 설정 존재 여부 등) |
| 2 | compile | src/main/java 소스코드 컴파일 |
| 3 | test | 단위 테스트 실행 (src/test/java) |
| 4 | package | 테스트를 통과하면, 결과물을 JAR/WAR 등으로 묶음 |
즉, mvn package를 실행하면 컴파일 → 테스트 → 패키징을 자동으로 순서대로 수행합니다.
🚫 4. -DskipTests — 테스트 실행 생략
-DskipTests는 테스트 코드를 실행하지 않고 빌드만 수행하게 합니다.
- 즉, 테스트 클래스는 컴파일하지만,
JUnit 등의 테스트는 실제 실행되지 않습니다.
✅ 예시 동작
mvn clean package -DskipTests
- clean: target 폴더 삭제
- compile: 소스 코드 컴파일
- test-compile: 테스트 코드 컴파일 (테스트 실행은 생략)
- package: jar/war 파일 생성
최종적으로 테스트 실행 없이 빌드 결과물(.jar, .war)이 생성됩니다.
⚖️ 5. -Dmaven.test.skip=true 와의 차이점
| 옵션 | 테스트 코드 컴파일 | 테스트 실행 |
| -DskipTests | ✅ 컴파일함 | ❌ 실행 안 함 |
| -Dmaven.test.skip=true | ❌ 컴파일도 안 함 | ❌ 실행 안 함 |
즉,
- -DskipTests: 테스트 코드는 컴파일하되 실행만 생략
- -Dmaven.test.skip=true: 테스트 코드 자체를 완전히 무시 (컴파일도 생략)
⚙️ 6. 실제 실행 예시 및 결과
명령어
mvn clean package -DskipTests
콘솔 출력 예시
[INFO] Scanning for projects...
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ my-app ---
[INFO] Deleting /home/user/my-app/target
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ my-app ---
[INFO] Copying resources
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ my-app ---
[INFO] Compiling 10 source files
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ my-app ---
[INFO] Copying test resources
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ my-app ---
[INFO] Compiling 5 test source files
[INFO] Tests are skipped.
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ my-app ---
[INFO] Building jar: /home/user/my-app/target/my-app.jar
[INFO] BUILD SUCCESS
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ my-app ---
[INFO] Deleting /home/user/my-app/target
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ my-app ---
[INFO] Copying resources
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ my-app ---
[INFO] Compiling 10 source files
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ my-app ---
[INFO] Copying test resources
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ my-app ---
[INFO] Compiling 5 test source files
[INFO] Tests are skipped.
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ my-app ---
[INFO] Building jar: /home/user/my-app/target/my-app.jar
[INFO] BUILD SUCCESS
💡 7. 언제 사용하나?
-DskipTests는 다음과 같은 경우에 유용합니다:
- CI/CD에서 빌드 속도를 빠르게 하고 싶을 때
- 테스트 코드가 아직 준비되지 않았을 때
- 외부 환경(예: DB, API 등)이 없어 테스트 실패가 불가피할 때
- 단순히 패키징 결과물만 필요할 때 (테스트는 별도 환경에서 수행)
🧾 요약
| 명령어 | 설명 |
| mvn clean | 이전 빌드 결과(target/) 삭제 |
| mvn package | 컴파일 → 테스트 → 패키징 수행 |
| -DskipTests | 테스트 실행 생략 (컴파일은 수행) |
| 전체 효과 | 이전 빌드 삭제 후, 테스트 생략하고 새 JAR/WAR 생성 |
✅ 결론
👉
mvn clean package -DskipTests
“이전 빌드 결과를 삭제한 뒤, 테스트 실행 없이 새 빌드 결과물을 패키징한다.”
반응형
'[AWS-FRF] > CICD' 카테고리의 다른 글
| [참고][Docker] Spring Boot 프로젝트를 Docker 이미지로 만들기 !! (0) | 2025.11.06 |
|---|---|
| RUN npm install 이란? (0) | 2025.11.04 |
| [참고][Docker] 스프링부트 프로젝트 도커 이미지(Image) 만들고 실행하기 !! (0) | 2025.11.03 |
| [참고][Docker] Dockerfile 작성법 !! (Jar파일 실행 이미지 만들기) (1) | 2025.11.03 |
| [참고] Jenkins를 활용한 CI/CD 파이프라인 구축 (GitHub → Docker → ECR 업로드) (1) | 2025.10.30 |
| [docker builder prune] Docker 빌드 캐시(build cache) 및 중간 이미지 정리!! (1) | 2025.10.29 |
| [참고][Jenkins] Docker build 후 Amazon ECR로 이미지 업로드하기 !! (0) | 2025.10.29 |
| [참고][AWS][Jenkins] 변경된 설정을 이력으로 남기기 (config history)!! (8) | 2025.01.21 |
댓글