Gradle

μ •ν•œκ²°Β·2026λ…„ 4μ›” 14일
post-thumbnail

πŸš€ λΉŒλ“œ 관리 λ„κ΅¬μ˜ μ΅œκ°•μž, Gradle 핡심 정리

였늘 ν•™μŠ΅ν•œ μ•„ν‚€ν…μ²˜ ꡬ쑰(Controller-Service-Repository)κ°€ μ›ν™œν•˜κ²Œ λŒμ•„κ°€λ„λ‘ λ’€μ—μ„œ μ§€μ›ν•΄μ£ΌλŠ” λΉŒλ“œ μ‹œμŠ€ν…œμ˜ 핡심인 Gradle에 λŒ€ν•΄ μ •λ¦¬ν•©λ‹ˆλ‹€.

1. λΉŒλ“œ(Build)와 λΉŒλ“œ λ„κ΅¬λž€?

λΉŒλ“œ(Build): μ†ŒμŠ€μ½”λ“œλ₯Ό 컴파일, ν…ŒμŠ€νŠΈ, 정적 뢄석 등을 거쳐 μ‹€ν–‰ κ°€λŠ₯ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(.jar, .war)으둜 λ§Œλ“œλŠ” 전체 과정을 λ§ν•©λ‹ˆλ‹€.
λΉŒλ“œ λ„κ΅¬μ˜ ν•„μš”μ„±: ν”„λ‘œμ νŠΈκ°€ 컀지면 μˆ˜λ§Žμ€ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€. 이λ₯Ό κ°œλ°œμžκ°€ 일일이 λ‹€μš΄λ‘œλ“œν•˜κ³  버전을 λ§žμΆ”λŠ” 것은 λΆˆκ°€λŠ₯에 가깝기에, 이λ₯Ό μžλ™ν™”ν•΄μ£ΌλŠ” 도ꡬ가 ν•„μˆ˜μ μž…λ‹ˆλ‹€.

2. Gradleμ΄λž€?

2012년에 μΆœμ‹œλœ Groovy/Kotlin 기반의 μ˜€ν”ˆμ†ŒμŠ€ λΉŒλ“œ μžλ™ν™” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
μœ μ—°ν•œ 슀크립트: μžλ°”μ™€ μœ μ‚¬ν•œ 문법을 μ‚¬μš©ν•˜μ—¬ μ„€μ • 파일 μžμ²΄κ°€ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ²˜λŸΌ 읽기 쉽고 κ°•λ ₯ν•œ κΈ°λŠ₯을 κ°€μ§‘λ‹ˆλ‹€.
높은 ν™•μž₯μ„±: ν”„λ‘œμ νŠΈ μ„€μ • μ£Όμž… 방식을 μ‚¬μš©ν•˜μ—¬ μ½”λ“œ μž¬μ‚¬μš©μ„±κ³Ό 쀑볡 μ œκ±°μ— 맀우 μœ λ¦¬ν•©λ‹ˆλ‹€.

3. μ™œ Maven보닀 Gradle인가? (μ£Όμš” μž₯점)

β‘  압도적인 λΉŒλ“œ 속도

곡식 λ¬Έμ„œμ— λ”°λ₯΄λ©΄ νŠΉμ • μƒν™©μ—μ„œ Maven보닀 μ΅œλŒ€ 100λ°°κΉŒμ§€ λΉ λ¦…λ‹ˆλ‹€. κ·Έ 비결은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
점진적 λΉŒλ“œ(Incremental Build): λ§ˆμ§€λ§‰ λΉŒλ“œ 이후 λ³€κ²½λœ 파일만 κ³¨λΌμ„œ λΉŒλ“œν•©λ‹ˆλ‹€.
λΉŒλ“œ μΊμ‹œ(Build Cache): 이전 λΉŒλ“œ 결과물을 μ €μž₯ν•΄λ‘μ—ˆλ‹€κ°€ ν•„μš”ν•  λ•Œ μž¬μ‚¬μš©ν•©λ‹ˆλ‹€.
데λͺ¬ ν”„λ‘œμ„ΈμŠ€(Daemon Process): λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ©”λͺ¨λ¦¬μ— μƒμ£Όμ‹œμΌœ μ΄ˆκΈ°ν™” μ‹œκ°„μ„ λ‹¨μΆ•ν•©λ‹ˆλ‹€.

β‘‘ λ©€ν‹° ν”„λ‘œμ νŠΈ λΉŒλ“œ (Multi-Project Build)

ν•˜λ‚˜μ˜ λΆ€λͺ¨ ν”„λ‘œμ νŠΈ μ•„λž˜μ— μ—¬λŸ¬ 개의 μ„œλΈŒ ν”„λ‘œμ νŠΈ(예: 곡톡 λͺ¨λ“ˆ, API λͺ¨λ“ˆ, κ΄€λ¦¬μž λͺ¨λ“ˆ)λ₯Ό 두어 κ΄€λ¦¬ν•˜κΈ°κ°€ 맀우 μˆ˜μ›”ν•©λ‹ˆλ‹€.

4. μ˜μ‘΄μ„± 관리(Dependency) 핡심 ν‚€μ›Œλ“œ

build.gradleμ—μ„œ 라이브러리λ₯Ό μΆ”κ°€ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν‚€μ›Œλ“œλ“€μ˜ 차이점을 μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

Gradle μ˜μ‘΄μ„± ν‚€μ›Œλ“œ 정리

ν‚€μ›Œλ“œμ„€λͺ… 및 νŠΉμ§•
implementationκ°€μž₯ ꢌμž₯λ˜λŠ” 방식. 컴파일 μ‹œμ—λŠ” ν•΄λ‹Ή μ˜μ‘΄μ„±μ„ 숨기고 μ‹€ν–‰ μ‹œμ—λ§Œ λ…ΈμΆœν•˜μ—¬ λΉŒλ“œ 속도λ₯Ό 높이고 μ˜μ‘΄μ„± μ˜€μ—Όμ„ λ°©μ§€
apiν•΄λ‹Ή μ˜μ‘΄μ„±μ„ κ°€μ Έμ˜¨ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œλ„ μ‚¬μš©ν•  수 있게 λ…ΈμΆœ (μ˜μ‘΄μ„± μ „νŒŒ)
compileOnly컴파일 μ‹œμ—λ§Œ ν•„μš”ν•˜κ³  κ²°κ³Όλ¬Ό(.jar)μ—λŠ” ν¬ν•¨λ˜μ§€ μ•ŠμŒ (예: Lombok)
runtimeOnlyμ‹€ν–‰ μ‹œμ—λ§Œ ν•„μš” (예: JDBC λ“œλΌμ΄λ²„)
testImplementationν…ŒμŠ€νŠΈ μ½”λ“œ μ‹€ν–‰ μ‹œμ—λ§Œ μ‚¬μš©λ¨ (예: JUnit, AssertJ)

πŸ’‘ 였늘 ν•™μŠ΅ λ‚΄μš©κ³Ό μ—°κ²°ν•˜κΈ° (회고)

μš°λ¦¬κ°€ Rq 클래슀λ₯Ό ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ build.gradle.kts에 AssertJ 라이브러리λ₯Ό μΆ”κ°€ν–ˆλ˜ 과정이 λ°”λ‘œ Gradle의 μ˜μ‘΄μ„± 관리 κΈ°λŠ₯을 μ‚¬μš©ν•œ μ‹€λ‘€μž…λ‹ˆλ‹€.
λ‹¨μˆœνžˆ 라이브러리λ₯Ό κ°€μ Έμ˜€λŠ” 것에 κ·ΈμΉ˜μ§€ μ•Šκ³ , λ ˆμ΄μ–΄λ“œ μ•„ν‚€ν…μ²˜λ‘œ μ„€κ³„λœ 우리 ν”„λ‘œμ νŠΈκ°€ μ•ˆμ •μ μœΌλ‘œ λΉŒλ“œλ˜κ³  ν…ŒμŠ€νŠΈλ  수 μžˆλ„λ‘ λ“ λ“ ν•œ κΈ°λ°˜μ„ λ§ˆλ ¨ν•΄μ£ΌλŠ” 것이 λ°”λ‘œ Gradle의 μ—­ν• μž…λ‹ˆλ‹€.

μ°Έκ³  자료: μš°μ•„ν•œν…Œν¬ - [10λΆ„ ν…Œμ½”ν†‘] λ£¨λ‚˜μ˜ Gradle

1개의 λŒ“κΈ€

comment-user-thumbnail
2026λ…„ 4μ›” 15일

λ°±μ—”λ“œμ— λŒ€ν•΄ 깊게 이해해보고 μ‹Άμ–΄ κΈ°μ΄ˆλΆ€ν„° λ‹€μ‹œ 작고 μžˆμ—ˆλŠ”λ° λ”± 도움이 λ˜λŠ” κΈ€μ΄μ—ˆμŠ΅λ‹ˆλ‹€.
쒋은 κΈ€ κ°μ‚¬ν•©λ‹ˆλ‹€! πŸ™‡β€β™€οΈ

λ‹΅κΈ€ 달기