빌드하는 방법
프로젝트 루트 경로에서
./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 |
---|