Spring/Spring Boot

스프링 부트 프로젝트 빌드

제우제우 2024. 8. 24. 20:09

빌드하는 방법

프로젝트 루트 경로에서

./gradlew build   

./gradlew clean build 

clean build vs build 차이점 

gradlew

  • Gradle Wrapper의 약자로, Gradle Wrapper 스크립트를 실행하는 것
  • 프로젝트에 Gradle이 설치되어 있지 않더라도 Gradle Wrapper를 사용하면 해당 프로젝트에 설정된 Gradle 버전으로 빌드를 수행할 수 있다.
  • ./는 현재 디렉토리에 있는 gradlew 스크립트를 실행하라는 의미

clean

  • clean 태스크는 빌드 디렉토리를 삭제하는 역할을 한다. 
  • 보통 프로젝트의 루트 디렉토리에 build/라는 이름의 디렉토리가 생성되며, 이 디렉토리 안에 모든 빌드 산출물이 저장된다.
  • clean 명령을 실행하면 build/ 디렉토리가 삭제되어 이전 빌드의 산출물이 모두 제거
  • 이를 통해 이전 빌드 결과와의 혼동을 방지하고, 깨끗한 상태에서 새로운 빌드를 수행할 수 있다. 

build

  • build 태스크는 프로젝트를 빌드하는 명령어로, 일반적으로 컴파일, 테스트, 패키징 등 빌드와 관련된 여러 작업을 수행한다.
  • 소스 코드를 컴파일하고, 테스트를 실행하며, 결과적으로는 실행 가능한 파일(JAR, WAR 등)을 생성
  • build.gradle 파일에 정의된 대로 각 단계가 실행

./gradlew clean build 정리 

  • 현재 디렉토리에서 Gradle Wrapper를 실행
  • clean 태스크를 통해 이전 빌드 결과물을 삭제 (./gradlew build 는 해당 과정 진행 X)
  • build 태스크를 실행하여 프로젝트를 컴파일, 테스트, 패키징

빌드 결과 확인 

프로젝트 루트 경로 -> build -> libs 폴더로 이동 

가보면 2가지 결과물이 있다. 

 

1. 프로젝트명-0.0.1-SNAPSHOT.jar

2. 프로젝트명-0.0.1-SNAPSHOT-plain.jar

 

프로젝트명-0.0.1-SNAPSHOT.jar

  • 보통 "Executable JAR" 또는 "Fat JAR"라고도 불린다. 
  • 이 파일은 애플리케이션을 실행할 수 있는 JAR 파일
  • 모든 의존성 라이브러리를 포함하고 있으며, 독립적으로 실행할 수 있도록 구성
  • MANIFEST.MF 파일에 메인 클래스 정보가 포함되어 있어, Java 명령어로 직접 실행할 수 있다.
  • 예: java -jar 프로젝트명-0.0.1-SNAPSHOT.jar
  • Spring Boot 프로젝트의 경우, 이 JAR 파일은 기본적으로 내장 톰캣 서버나 Jetty 같은 서버를 포함하여 애플리케이션을 배포하고 실행할 수 있게 해준다. 

프로젝트명-0.0.1-SNAPSHOT-plain.jar

  • 보통 "Plain JAR" 또는 "Thin JAR"라고 불린다. 
  • 이 파일은 애플리케이션의 클래스 파일만 포함된 JAR 파일
  • 의존성 라이브러리는 포함되어 있지 않으며, 애플리케이션 코드만 포함
  • 주로 라이브러리 형태로 다른 프로젝트에서 사용할 때 생성
  • 독립적으로 실행될 수 없다. 이 JAR 파일을 사용하려면, 의존성 라이브러리가 클래스패스에 있어야 한다.

 

프로젝트명-0.0.1-SNAPSHOT-plain.jar를 생성하고 싶지 않다면?

// build.gradle

jar{
  enabled = false
}

 

테스트를 위해 libs 파일 삭제: rm -rf libs

 

다시 build: 프로젝트명-0.0.1-SNAPSHOT.jar 만 존재한다. 

 

물론 프로젝트명-0.0.1-SNAPSHOT.jar 생성을 제외하고 싶으면 bootJar에 enabled = false 옵션을 주면 된다. 

bootJar{
    enabled = false
}

 

실행 방법 

java -jar 프로젝트명-0.0.1-SNAPSHOT.jar

 

 

실행 성공 ~

 

 

 

 

 

 

 

 

'Spring > Spring Boot' 카테고리의 다른 글

[Spring Boot] 자동 구성 동작  (0) 2024.09.03