본문 바로가기
[AWS-FRF]/CICD

clean package -DskipTests 정의 !!

by METAVERSE STORY 2025. 11. 4.
반응형

 

 

 

🧱 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

💡 7. 언제 사용하나?

-DskipTests는 다음과 같은 경우에 유용합니다:

  • CI/CD에서 빌드 속도를 빠르게 하고 싶을 때
  • 테스트 코드가 아직 준비되지 않았을 때
  • 외부 환경(예: DB, API 등)이 없어 테스트 실패가 불가피할 때
  • 단순히 패키징 결과물만 필요할 때 (테스트는 별도 환경에서 수행)

🧾 요약

명령어 설명
mvn clean 이전 빌드 결과(target/) 삭제
mvn package 컴파일 → 테스트 → 패키징 수행
-DskipTests 테스트 실행 생략 (컴파일은 수행)
전체 효과 이전 빌드 삭제 후, 테스트 생략하고 새 JAR/WAR 생성

✅ 결론

👉
mvn clean package -DskipTests

이전 빌드 결과를 삭제한 뒤, 테스트 실행 없이 새 빌드 결과물을 패키징한다.

 

 

 

반응형

댓글