빌드 도구
Gradle의 주요 특징
DSL (Domain Specific Language)
- Groovy 또는 Kotlin 스크립트 언어를 사용하여 빌드 스크립트를 작성
- 빌드 스크립트: 프로젝트의 빌드 프로세스를 설정하고 정의하는 역할
유연성
- 커스텀 태스크를 정의하거나 플러그인을 사용하여 다양한 빌드 요구사항에 맞출 수 있음
의존성 관리
- Gradle은 중앙 저장소 또는 로컬 라이브러리에서 필요한 의존성을 자동으로 가져옴
병렬 빌드
- 멀티 코어 CPU를 활용하여 빌드 속도를 최적화
Incremetal Build
- 변경된 부분만 빌드하여 시간을 절약
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework:spring-core:5.3.8'
}
의존성 (Dependencies):
implementation
, testImplementation
, compileOnly
같은 키워드로 의존성을 정의태스크 (Tasks):
clean
, build
, test
같은 기본 태스크 외에도 커스텀 태스크도 제작 가능task hello {
doLast {
println 'Hello, Gradle!'
}
}
java
: Java 프로젝트 지원.application
: 애플리케이션 빌드 및 실행 지원.kotlin
: Kotlin 프로젝트 지원.속도와 성능:
유연한 구성:
다양한 언어와 플랫폼 지원:
플러그인 에코시스템:
초기화 단계:
구성 단계:
실행 단계:
- 태스크 그래프에 정의된 순서대로 태스크를 실행
애플리케이션 빌드:
테스트 자동화:
의존성 관리:
Gradle로 애플리케이션 빌드:
build/libs/
디렉토리에 저장됨: ./gradlew build
Dockerfile 작성:
FROM openjdk:11
COPY build/libs/my-app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
docker build -t my-app .
docker run -d -p 8080:8080 my-app
com.bmuschko.docker-remote-api
같은 플러그인을 사용하면 Gradle로 Docker 이미지를 빌드하고 실행하는 작업까지 자동화 가능./gradlew buildDockerImage
build.gradle
예시 코드plugins {
id 'com.bmuschko.docker-remote-api' version '7.4.0'
}
docker {
url = 'unix:///var/run/docker.sock'
}
task buildDockerImage(type: DockerBuildImage) {
inputDir = file('.')
tags = ['my-app:latest']
}
일관된 빌드 환경:
자동화:
다중 언어 지원: