What Is Gradle?

1. Gradle์ด๋ž€?

  • Groovy ๊ธฐ๋ฐ˜์˜ ๋นŒ๋“œ ๋„๊ตฌ
  • ๋นŒ๋“œ ์ž๋™ํ™” ์‹œ์Šคํ…œ - ์ž‘์„ฑํ•œ Java ์ฝ”๋“œ๋ฅผ ์„ค์ •์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ๋นŒ๋“œ
  • Maven vs Gradle
    • gradle์€ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต ์‹œ ์‹คํ–‰ ๊ฒฐ๊ณผ ์‹œ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ํผ
    • ์Šคํฌ๋ฆฝํŠธ ๊ธธ์ด, ๊ฐ€๋…์„ฑ gradle > maven
    • ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ gradle์ด ๋น ๋ฆ„

Build

  • ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •
  • Gradle์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„ํŽธํ•˜๊ฒŒ Java ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ jar ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์คŒ

2. build.gradle

  • Gradle ๊ธฐ๋ฐ˜์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ
  • ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • groovy / kotlin
  • ๊ฐœ๋ฐœ์‹œ ํ•„์š”ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ Gradle์ด ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ
  • ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ์˜ ์˜์กด์„ฑ์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ โ†’ ์ถฉ๋Œ ๊ฑฑ์ • ์—†์ด ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ ๊ฐ€๋Šฅ
// ์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด java plugin์„ ์„ค์ •ํ•œ๋‹ค. 
apply plugin: 'java' 
// application์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค. 
apply plugin: 'application' 
 
// ์ €์žฅ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์„น์…˜์ด๋‹ค. ์ฃผ๋กœ Maven์˜ ์ €์žฅ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
repositories { 
    mavenCentral()
}
// ์ข…์†์„ฑ์„ ์ž…๋ ฅํ•˜๋Š” ์„น์…˜์ด๋‹ค. ๊ธฐ์กด์—๋Š” compile์ด ์žˆ์—ˆ์œผ๋‚˜ 3.0๋ฒ„์ „๋ถ€ํ„ฐ deprecated๋˜์—ˆ๋‹ค.
dependencies {
    // 'group:name:version'์ˆœ์œผ๋กœ ์ ๋Š”๋‹ค. group: 'junit', name: 'junit', version: '4.13.2'์‹์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
    api 'com.google.guava:guava:32.1.2-jre' // ๊ฐ„์ ‘ ์˜์กด, ์ง์ ‘ ์˜์กดํ•˜๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์„ rebuildํ•œ๋‹ค
    implementation 'junit:junit:4.13.2' // ์ง์ ‘ ์˜์กดํ•˜๋Š” ๋ชจ๋“ˆ๋งŒ rebuildํ•œ๋‹ค.
} 
application {
    // ๋ฉ”์ธ class์˜ ์œ„์น˜์™€ ์ด๋ฆ„์„ ์ ๋Š”๋‹ค.
    mainClass = 'package.name.AppClass'
}