๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SpringBoot

[SpringBoot] maven VS gradle

by ๊ฐœ๋ฐœLOG 2025. 1. 12.
๋ฐ˜์‘ํ˜•

Maven๊ณผ Gradle์€ ๋‘˜ ๋‹ค ๋นŒ๋“œ ๋„๊ตฌ๋กœ, Java ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์˜์กด์„ฑ ๊ด€๋ฆฌ, ๋นŒ๋“œ ์ž๋™ํ™”, ๋ฐฐํฌ, ํ…Œ์ŠคํŠธ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋„๊ตฌ๋Š” ์„ค๊ณ„ ์ฒ ํ•™, ์‚ฌ์šฉ๋ฒ•, ์„ฑ๋Šฅ ๋“ฑ์— ์žˆ์–ด ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์—์„œ Maven๊ณผ Gradle์˜ ์ฃผ์š” ์ฐจ์ด์ ๋“ค์„ ๋น„๊ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด

  • Maven:
    • XML์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ์„ค์ •์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    • pom.xml ํŒŒ์ผ์„ ํ†ตํ•ด ์˜์กด์„ฑ, ํ”Œ๋Ÿฌ๊ทธ์ธ, ๋นŒ๋“œ ๊ตฌ์„ฑ ๋“ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • XML์€ ์„ ์–ธ์ ์ธ ๋ฐฉ์‹์ด์ง€๋งŒ ๋‹ค์†Œ ์žฅํ™ฉํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์˜ˆ์‹œ (pom.xml):
  • <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.0</version> </dependency>
  • Gradle:
    • **DSL (Domain Specific Language)**์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Groovy ๋˜๋Š” Kotlin์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Groovy ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋” ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์ธ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ์‹œ (build.gradle):
  • dependencies { implementation 'org.springframework:spring-webmvc:5.3.0' }

2. ๋นŒ๋“œ ์†๋„

  • Maven:
    • XML ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์‹œ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆฌ๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋งค๋ฒˆ ๋™์ผํ•œ ๋นŒ๋“œ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ๋•Œ๋งˆ๋‹ค ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณ‘๋ ฌ ๋นŒ๋“œ๋‚˜ ์บ์‹ฑ ๊ฐ™์€ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.
  • Gradle:
    • Gradle์€ ๋นŒ๋“œ ์บ์‹œ์™€ ๋ณ‘๋ ฌ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•˜์—ฌ ๋นŒ๋“œ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
    • ํ–ฅ์ƒ๋œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์ธํฌ๋ฆฌ๋ฉ˜ํƒˆ ๋นŒ๋“œ(๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๋นŒ๋“œ)์™€ ๋นŒ๋“œ ์บ์‹œ(์ด์ „์— ๋นŒ๋“œํ•œ ๋‚ด์šฉ์„ ์žฌ์‚ฌ์šฉ) ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ Gradle์€ Maven๋ณด๋‹ค ๋” ๋น ๋ฅธ ๋นŒ๋“œ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

3. ์˜์กด์„ฑ ๊ด€๋ฆฌ

  • Maven:
    • ์ค‘์•™ ์ €์žฅ์†Œ(Maven Central Repository)์—์„œ ์˜์กด์„ฑ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    • ์˜์กด์„ฑ ๋ฒ”์œ„, ๋ฒ„์ „ ๊ด€๋ฆฌ, ์ „ํŒŒ ์„ค์ • ๋“ฑ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์˜์กด์„ฑ์„ ์„ ์–ธํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Gradle:
    • Gradle์€ Maven Central๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ์ €์žฅ์†Œ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค.
    • implementation, api, compileOnly ๋“ฑ ์˜์กด์„ฑ ๋ฒ”์œ„๋ฅผ ๋” ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ธฐ๋ณธ์ ์ธ ์˜์กด์„ฑ ๊ด€๋ฆฌ ์™ธ์—๋„, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ์™€ ๋ณต์žกํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ

  • Maven:
    • ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๊ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŠน์ • ์ž‘์—…(์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์€ pom.xml์— ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ„์˜ ์˜์กด์„ฑ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Gradle:
    • Gradle๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋งŒ, ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ๋ฒ•์ด ๋” ์œ ์—ฐํ•˜๊ณ  ์ง๊ด€์ ์ž…๋‹ˆ๋‹ค.
    • Gradle์€ ๋™์  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•˜๋ฉฐ, ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •๋„ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž ์ •์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ์œ ์—ฐ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ

  • Maven:
    • Maven์€ ๋ช…์‹œ์ ์ด๊ณ  ์ •ํ•ด์ง„ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •์ด ์ผ์ •ํ•˜์ง€๋งŒ, ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์„ค์ •์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์ œํ•œ์ ์ด๊ณ , ์ถ”๊ฐ€์ ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • Gradle:
    • Gradle์€ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋งค์šฐ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
    • Gradle์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋นŒ๋“œ ๋…ผ๋ฆฌ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • build.gradle์—์„œ Groovy ๋˜๋Š” Kotlin DSL์„ ์‚ฌ์šฉํ•ด ํ•„์š”ํ•œ ๋กœ์ง์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6. ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ง€์›

  • Maven:
    • Maven์€ ์˜ค๋ž˜๋œ ๋„๊ตฌ๋กœ, ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฌธ์„œํ™”๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋งŽ์€ ๊ธฐ์—…์—์„œ Maven์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฑฐ์˜ ๋ชจ๋“  Java ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ๋นŒ๋“œ ๋„๊ตฌ๋กœ ์ž๋ฆฌ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • Gradle:
    • Gradle์€ ๋น„๊ต์  ์ƒˆ๋กœ์šด ๋„๊ตฌ์ด์ง€๋งŒ, ๋น ๋ฅด๊ฒŒ ์ธ๊ธฐ๋ฅผ ๋Œ๊ณ  ์žˆ์œผ๋ฉฐ Android ํ”„๋กœ์ ํŠธ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • Gradle์˜ ๋ฌธ์„œํ™”์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›๋„ ํ™œ๋ฐœํžˆ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์ง€๋งŒ, Maven๋ณด๋‹ค๋Š” ์•ฝ๊ฐ„ ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7. ์‚ฌ์šฉ์„ฑ

  • Maven:
    • ์„ค์ • ํŒŒ์ผ์ด ์„ ์–ธ์ ์ด๋ฉฐ, ๊ทœ์น™๊ณผ ํ‘œ์ค€์— ๋งž์ถฐ์„œ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
    • XML ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๊ตฌ๋ฌธ์ด ๋‹ค์†Œ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ต์ˆ™ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Gradle:
    • ๋™์ ์ด๊ณ  ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์‚ฌ์šฉ๋ฒ•์ด ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
    • Groovy ๋˜๋Š” Kotlin DSL์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋” ๋ณต์žกํ•œ ๋นŒ๋“œ ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

8. ๊ฒฐ๋ก : ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

  • Maven์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:
    • ํ‘œ์ค€ํ™”๋œ ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
    • ์ด๋ฏธ Maven ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ •๋œ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›๊ณผ ์•ˆ์ •์ ์ธ ๋ฌธ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
  • Gradle์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:
    • ๋นŒ๋“œ ์†๋„์™€ ์œ ์—ฐ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
    • ๋ณต์žกํ•œ ๋นŒ๋“œ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋กœ์ง์„ ๋งŽ์ด ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • Android ํ”„๋กœ์ ํŠธ์™€ ๊ฐ™์€ ์ตœ์‹  ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ
    • ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ

 


์ •๋ฆฌ

ํŠน์„ฑ    Maven  Gradle
๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด   XML Groovy / Kotlin DSL
๋นŒ๋“œ ์†๋„   ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ ๋น ๋ฅด๋ฉฐ ๋นŒ๋“œ ์บ์‹œ ๋ฐ ๋ณ‘๋ ฌ ๋นŒ๋“œ ์ง€์›
์˜์กด์„ฑ ๊ด€๋ฆฌ   ์ค‘์•™ ์ €์žฅ์†Œ์—์„œ ์˜์กด์„ฑ ๊ด€๋ฆฌ ์œ ์—ฐํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ, ๋‹ค์–‘ํ•œ ์ €์žฅ์†Œ ์ง€์›
ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ   ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค์†Œ ๋ณต์žก ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์ด ๊ฐ„๊ฒฐํ•˜๊ณ  ์œ ์—ฐ
์œ ์—ฐ์„ฑ   ์ œํ•œ์  ๋งค์šฐ ์œ ์—ฐํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ 
์‚ฌ์šฉ์„ฑ   ๊ทœ๊ฒฉํ™”๋œ ์„ค์ • ๋ฐฉ์‹ ๋™์ ์ด๊ณ  ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ์„ค์ •
๊ธฐํƒ€   ์˜ค๋žœ ์—ญ์‚ฌ์™€ ์•ˆ์ •์„ฑ ์ตœ์‹  ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ง€์›

 

๊ฒฐ๊ตญ, Maven๊ณผ Gradle์€ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์žฅ๋‹จ์ ์ด ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•