본문 바로가기
카테고리 없음

# 빌드(Build)란? - 코드를 실행 가능한 환경으로 만들기

by code study 2026. 6. 1.

들어가며

개발이 끝난 코드를 서버에 올리거나 배포하려면 빌드 과정이 필요합니다.
"빌드한다"는 말이 정확히 무엇을 의미하는지, Java에서는 어떻게 이루어지는지 정리해보겠습니다.


빌드(Build)란?

빌드는 개발자가 작성한 소스 코드를 실행할 수 있는 형태로 변환하는 과정입니다.
단순히 컴파일만 하는 것이 아니라, 실행에 필요한 모든 준비를 포함합니다.

[빌드 과정]

소스 코드 (.java)
      ↓  컴파일
바이트코드 (.class)
      ↓  의존성 라이브러리 포함
      ↓  리소스 파일 포함 (application.yml 등)
      ↓  테스트 실행
실행 가능한 파일 (.jar / .war)
      ↓
서버에서 실행

빌드가 하는 일

빌드는 단순히 컴파일 이상의 작업을 수행합니다.

1. 컴파일       - .java → .class (바이트코드 변환)
2. 의존성 관리  - pom.xml(Maven) 또는 build.gradle(Gradle)에 정의된 라이브러리 포함
3. 테스트 실행  - 빌드 전 테스트 코드 자동 실행
4. 리소스 포함  - application.yml, 정적 파일 등 포함
5. 패키징       - 모든 것을 하나의 .jar 또는 .war 파일로 압축

JAR(Java Archive)란?

JAR 파일은 Java 프로그램 실행에 필요한 모든 파일을 하나로 묶은 압축 파일입니다.
.class 파일, 라이브러리, 설정 파일, 리소스 등이 모두 포함됩니다.

[JAR 파일 내부 구조]

my-app.jar
├── BOOT-INF/
│   ├── classes/          ← 컴파일된 .class 파일
│   │   └── com/example/
│   │       ├── MemberController.class
│   │       └── MemberService.class
│   └── lib/              ← 의존성 라이브러리 (Spring, JPA 등)
│       ├── spring-boot-3.0.jar
│       └── ...
├── META-INF/
│   └── MANIFEST.MF       ← 실행 시작점(main 클래스) 정보
└── resources/
    └── application.yml   ← 설정 파일

Spring Boot에서의 빌드

Spring Boot는 Executable JAR(실행 가능한 JAR) 를 만들 수 있습니다.
JVM만 설치되어 있으면 별도의 WAS(Tomcat 등) 없이 바로 실행됩니다.

Maven으로 빌드

# 빌드 명령어
mvn clean package

# 결과물
target/my-app-1.0.jar

Gradle로 빌드

# 빌드 명령어
./gradlew clean build

# 결과물
build/libs/my-app-1.0.jar

JAR 파일 실행

# 빌드된 JAR 파일 실행
java -jar my-app-1.0.jar

# 포트나 프로파일 지정
java -jar my-app-1.0.jar --server.port=8081
java -jar my-app-1.0.jar --spring.profiles.active=prod

빌드 도구 - Maven vs Gradle

Java 프로젝트에서 빌드를 자동화하는 도구입니다.

항목 Maven Gradle
설정 파일 pom.xml (XML) build.gradle (Groovy/Kotlin)
빌드 명령어 mvn clean package ./gradlew clean build
빌드 속도 상대적으로 느림 빠름 (증분 빌드 지원)
설정 방식 XML로 장황함 간결하고 유연함
현재 트렌드 레거시 프로젝트 Spring Boot 신규 프로젝트 권장

Maven 의존성 설정 (pom.xml)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>3.0.0</version>
</dependency>

Gradle 의존성 설정 (build.gradle)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:3.0.0'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.mysql:mysql-connector-j'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

빌드 과정 상세 - clean build

./gradlew clean build
clean   → 이전 빌드 결과물 삭제 (build/ 폴더 제거)
build   → 아래 단계 순서대로 실행

  1. compileJava      - .java → .class 컴파일
  2. processResources - 리소스 파일 복사
  3. test             - 테스트 코드 실행
  4. jar              - .class + 리소스 → .jar 패키징
  5. bootJar          - 의존성 포함한 실행 가능 JAR 생성

JAR vs WAR

항목 JAR WAR
전체 이름 Java Archive Web Application Archive
실행 방법 java -jar 직접 실행 Tomcat 등 WAS에 배포
내장 서버 포함 (Spring Boot) 포함 안 함
사용 예시 Spring Boot 단독 실행 레거시 서버 환경 배포
현재 트렌드 권장 (MSA, 클라우드 환경) 레거시

Spring Boot는 내장 Tomcat이 포함된 JAR 방식을 기본으로 권장합니다.


AWS 배포와의 연관

Creator-Flex 프로젝트에서 AWS EC2에 배포할 때도 이 빌드 과정을 거칩니다.

[로컬 개발 → AWS 배포 흐름]

1. 로컬에서 개발
        ↓
2. ./gradlew clean build
        ↓
3. .jar 파일 생성
        ↓
4. EC2 서버에 .jar 파일 업로드 (SCP, GitHub Actions 등)
        ↓
5. EC2에서 java -jar my-app.jar 실행
        ↓
6. 서비스 운영

정리

  • 빌드는 개발자가 작성한 소스 코드를 실행할 수 있는 형태로 변환하는 과정이다.
  • 컴파일, 의존성 포함, 테스트 실행, 리소스 포함, 패키징 등 실행에 필요한 모든 준비를 포함한다.
  • JAR 파일은 실행에 필요한 모든 파일을 하나로 묶은 압축 파일로, java -jar 명령어로 바로 실행할 수 있다.
  • Spring Boot는 내장 Tomcat이 포함된 실행 가능한 JAR를 생성해 별도의 WAS 없이 실행할 수 있다.
  • Maven(mvn clean package)과 Gradle(./gradlew clean build)이 대표적인 빌드 도구이며, Spring Boot 신규 프로젝트에는 Gradle을 권장한다.