sdk install gradle
brew install gradle
choco install gradle
scoop install gradle
# ํ๋ก์ ํธ ๋น๋
gradle build
# ํ
์คํธ ๊ฑด๋๋ฐ๊ณ ๋น๋
gradle build -x test
# Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์คํ
gradle bootRun
# Gradle Wrapper ์ฌ์ฉ (๊ถ์ฅ)
./gradlew build
./gradlew bootRun
# ์ ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir my-project
cd my-project
# Gradle ์ด๊ธฐํ (๋ํํ)
gradle init
mkdir basic-demo
cd basic-demo
touch build.gradle
# ๋ชจ๋ ํ์คํฌ ๋ณด๊ธฐ
gradle tasks --all
# ๊ธฐ๋ณธ ํ์คํฌ ๋ณด๊ธฐ
gradle tasks
implementation
: ์ปดํ์ผ ๋ฐ ๋ฐํ์์ ํ์, API๋ ๋
ธ์ถ๋์ง ์์ (๊ถ์ฅ)api
: ์ปดํ์ผ ๋ฐ ๋ฐํ์์ ํ์, API๊ฐ ๋
ธ์ถ๋จcompileOnly
: ์ปดํ์ผ ์์๋ง ํ์ (๋ฐํ์์๋ ๋ถํ์)runtimeOnly
: ๋ฐํ์์๋ง ํ์testImplementation
: ํ
์คํธ ์ปดํ์ผ ๋ฐ ์คํ์๋ง ํ์testCompileOnly
: ํ
์คํธ ์ปดํ์ผ์๋ง ํ์testRuntimeOnly
: ํ
์คํธ ์คํ์๋ง ํ์plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
// ํ์ผ ๋ณต์ฌ ํ์คํฌ
task copy(type: Copy) {
from 'src'
into 'dest'
}
// ZIP ํ์ผ ์์ฑ ํ์คํฌ
task zip(type: Zip) {
from 'src'
archiveFileName = 'archive.zip'
}
# ํ์ฌ ์คํ ์ค์ธ ๋ชจ๋ Gradle ๋ฐ๋ชฌ ์ํ ํ์ธ
gradle --status
# ๋ชจ๋ Gradle ๋ฐ๋ชฌ ์ค์ง
gradle --stop
# ํน์ ํ๋ก์ธ์ค ID๋ก ๋ฐ๋ชฌ ์ค์ง (Linux/macOS)
kill -9 <PID>
# ์คํ ์ค์ธ Gradle ๋ฐ๋ชฌ ์ฐพ๊ธฐ (Linux/macOS)
ps -ef | grep gradle
# ์คํ ์ค์ธ Gradle ๋ฐ๋ชฌ ์ฐพ๊ธฐ (Windows)
tasklist | findstr gradle
gradle.properties
ํ์ผ์ ๋ค์ ์ค์ ์ถ๊ฐ:
# ๋ฐ๋ชฌ ๋นํ์ฑํ (ํญ์ ์ ํ๋ก์ธ์ค์์ ๋น๋ ์คํ)
org.gradle.daemon=false
# ๋ฐ๋ชฌ JVM ๋ฉ๋ชจ๋ฆฌ ์ค์
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError
# ๋ฐ๋ชฌ ์ ํด ์๊ฐ ์ค์ (๋ฐ๋ฆฌ์ด ๋จ์, ์: 1์๊ฐ)
org.gradle.daemon.idletimeout=3600000
~/.gradle/daemon/<๋ฒ์ >/daemon-<PID>.out.log
gradle wrapper
gradle wrapper --gradle-version=8.7
./gradlew build # Linux/macOS
gradlew.bat build # Windows
repositories {
mavenCentral()
maven {
url 'https://repo.mycompany.com/maven2'
credentials {
username = 'username'
password = 'password'
}
}
// JCenter๋ ๋ ์ด์ ๊ถ์ฅ๋์ง ์์
// jcenter()
}
# Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ์ ์ ๋ฌ
./gradlew bootRun --args='--server.port=9090 --spring.profiles.active=dev'
// settings.gradle
rootProject.name = 'my-project'
include 'app', 'library'
// root build.gradle
allprojects {
repositories {
mavenCentral()
}
}
subprojects {
apply plugin: 'java'
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.2'
}
}
ํน์ฑ | Gradle | Maven |
---|---|---|
๋น๋ ์คํฌ๋ฆฝํธ | Groovy ๋๋ Kotlin DSL (๊ฐ๊ฒฐํ๊ณ ์ ์ฐํจ) | XML (์๋์ ์ผ๋ก ์ฅํฉํ๊ณ ๊ฒฝ์ง๋จ) |
์ฑ๋ฅ | ์ฆ๋ถ ๋น๋, ๋น๋ ์บ์, ๋ณ๋ ฌ ์คํ์ผ๋ก ๋ ๋น ๋ฆ | ์๋์ ์ผ๋ก ๋๋ฆผ |
์์กด์ฑ ๊ด๋ฆฌ | ๋์ ๋ฒ์ , ์ ์ด์ ์์กด์ฑ ์ ์ธ, ์ธ๋ฐํ ์ ์ด | ์ค์ ์ ์ฅ์, ์ ์ด์ ์์กด์ฑ ๊ด๋ฆฌ |
์ปค์คํฐ๋ง์ด์ง | ๋งค์ฐ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ํ๋ฌ๊ทธ์ธ ์์คํ | ํ๋ฌ๊ทธ์ธ ์์คํ ์ด ์์ง๋ง ๋ ์ ์ฐํจ |
ํ์ต ๊ณก์ | ๋ ๊ฐํ๋ฅธ ํ์ต ๊ณก์ (์ ์ฐ์ฑ์ผ๋ก ์ธํด) | ์๋์ ์ผ๋ก ๋ฐฐ์ฐ๊ธฐ ์ฌ์ |
IDE ์ง์ | ์ฃผ์ IDE์์ ์ง์ | ์ฃผ์ IDE์์ ๊ด๋ฒ์ํ๊ฒ ์ง์ |
์ปค๋ฎค๋ํฐ | ์ฑ์ฅ ์ค์ด์ง๋ง Maven๋ณด๋ค ์์ | ์ค๋ ์ญ์ฌ์ ํฐ ์ปค๋ฎค๋ํฐ |
์ ํฉํ ํ๋ก์ ํธ | ๋ณต์กํ๊ณ ๋๊ท๋ชจ ํ๋ก์ ํธ, ์ปค์คํ ๋น๋ ๋ก์ง | ํ์ค์ ์ธ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ง ํ๋ก์ ํธ |
Maven์์ Gradle๋ก ์ ํ์ ๊ณ ๋ คํ๋ค๋ฉด:
gradle init
๋ช
๋ น์ผ๋ก ์ฝ๊ฒ ๋ณํ ๊ฐ๋ฅ