๐ŸƒMaven vs Gradle

dev_itzel_02โœจยท2024๋…„ 7์›” 8์ผ

๐ŸƒJavaSpring

๋ชฉ๋ก ๋ณด๊ธฐ
2/11
post-thumbnail

gradle๊ณผ maven์€ ์ž๋ฐ” ์ƒํƒœ๊ณ„์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ์ด๋‹ค.

โš’๏ธ Build Tool (๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ)

์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ์Šต์„ ๊ฐ–์ถ”๋ ค๋ฉด '๋นŒ๋“œ'๋ผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋นŒ๋“œ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ๋ฅผ '๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ'๋ผ๊ณ  ํ•œ๋‹ค.

<๋นŒ๋“œ ๊ณผ์ •>

  • ์˜์กด์„ฑ ๋‚ด๋ ค๋ฐ›๊ธฐ
  • ์ฝ”๋“œ ํŒจํ‚ค์ง•
  • ์ปดํŒŒ์ผ
  • ํ…Œ์ŠคํŠธ ์‹คํ–‰

โ“Maven

Maven์€ ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์ด๋‹ค.

โœ”๏ธ pom.xml์„ ์ด์šฉํ•˜์—ฌ ์ •ํ˜•ํ™”๋œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋‹ค์šด์„ ๋ฐ›์•„์ค€๋‹ค.
โœ”๏ธ ๊ธฐ์กด์—” Apach Ant๋ผ๋Š” ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ Maven์ด Ant๋ฅผ ๋„˜์–ด์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

  • Ant: ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœ๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœย ์ปค๋งจ๋“œ ๋ผ์ธ ํ˜•ํƒœ์˜ ๋นŒ๋“œ, ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ

โœ”๏ธ Lifecycle ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ, ์ •ํ•ด์ง„ Lifecycle์— ์˜ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

1. validate: ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๊ฒ€์ฆ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ ์—ฌ๋ถ€ ํ™•์ธ
2. compile: ์†Œ์Šค ์ฝ”๋“œ(.java)๋ฅผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.class)๋กœ ์ปดํŒŒ์ผ
3. test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ฝ”๋“œ ๊ธฐ๋Šฅ ๊ฒ€์ฆ
4. package: ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ํ˜•์‹(JAR, WAR)์œผ๋กœ ํŒจํ‚ค์ง€
5. intergration test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
6. verify: ํ”„๋กœ์ ํŠธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ํ’ˆ์งˆ ํ‘œ์ค€ ์ถฉ์กฑ ์—ฌ๋ถ€ ํ™•์ธ
7. install: ํŒจํ‚ค์ง€๋œ ์ฝ”๋“œ๋ฅผ ๋กœ์ปฌ Maven ์ €์žฅ์†Œ์— ์„ค์น˜
8. deploy: ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ณต์‚ฌ

โ“Gradle

Gradle์€ Ant์™€ Maven์˜ ์žฅ์ ๋“ค์„ ๋ชจ์•„ ๊ฐœ๋ฐœํ•ด 2012๋…„์— ์ถœ์‹œ๋œ Groovy๋ฅผ ์ด์šฉํ•œ ๋นŒ๋“œ ์ž๋™ํ™” ์‹œ์Šคํ…œ์ด๋‹ค.

โœ”๏ธ JVM์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ๋นŒ๋“œ ๋„๊ตฌ์ด๋‹ค.
โœ”๏ธ ๊ธฐ๋ณธ ์ œ๊ณต ๊ธฐ๋Šฅ, ํƒ€์‚ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด‘๋ฒ”์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋นŒ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
โœ”๏ธ Android, Java, Kotlin Multiplatform, Groovy, Scala, Javascript, C/C++๋ฅผ ์ง€์›ํ•œ๋‹ค.

๐ŸฅŠMaven vs Gradle

๊ฒฐ๋ก ์ ์œผ๋ก  ๐Ÿ˜Gradle์ด ๋” ์ข‹๋‹ค.
๋ฉ”์ด๋ธ์— ๋น„ํ•ด ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ์„ค์ •์ด ๊ฐ„๋‹จํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์–ธ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋˜ํ•œ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ์†๋„๊ฐ€ ๋ฉ”์ด๋ธ์— ๋น„ํ•ด ๋” ๋น ๋ฅด๋‹ค.

Gradle์ด Maven๋ณด๋‹ค ๋น ๋ฅธ ์ด์œ  โ“

  • Incrementality - ์ž‘์—…์˜ ์ž…์ถœ๋ ฅ์„ ์ถ”์ ํ•˜๊ณ , ํ•„์š”ํ•œ ์ž‘์—…๋งŒ ์‹คํ–‰ํ•˜๋ฉฐ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ž‘์—…์„ ํ”ผํ•œ๋‹ค.
  • Build Cache - ๋จธ์‹  ๊ฐ„ ํฌํ•จํ•˜์—ฌ ๋™์ผํ•œ ์ž…๋ ฅ์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ Gradle ๋นŒ๋“œ์˜ ์ถœ๋ ฅ์„ ์žฌ์‚ฌ์šฉํ•œ๋‹ค.
  • Gradle Daemon - ๋นŒ๋“œ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— "hot" ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ์žฅ๊ธฐ ํ”„๋กœ์„ธ์Šค์ด๋‹ค.

๐Ÿพ References

profile
๐Ÿœ๐Ÿ‘ฃsteadiness๐Ÿœ๐Ÿ‘ฃ

0๊ฐœ์˜ ๋Œ“๊ธ€