Skip to content

Latest commit

ย 

History

History
53 lines (43 loc) ยท 3.56 KB

README.md

File metadata and controls

53 lines (43 loc) ยท 3.56 KB

build tool - Maven vs Gradle

๋นŒ๋“œ๋ž€ ์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ์„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ์ ์ธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰ ์ž‘์„ฑํ•œ ์†Œ์Šค์ฝ”๋“œ์™€ ํŒŒ์ผ ๋ฐ ์ž์›์„ JVM์ด๋‚˜ Tomcat๊ณผ ๊ฐ™์€ WAS๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ณผ์ • ๋ฐ ๊ฒฐ๊ณผ๋ฌผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ๋ž€ ์ด๋Ÿฐ ๋นŒ๋“œ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋„๊ตฌ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ข…์†์„ฑ ๋‹ค์šด๋กœ๋“œ - ์ „์ฒ˜๋ฆฌ(Preprocessing)
  2. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ(Compile)
  3. ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ํŒจํ‚ค์ง•(Packaging)
  4. ํ…Œ์ŠคํŠธ ์‹คํ–‰(Testing)
  5. ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์— ๋ฐฐํฌ(distribution)

Maven

Maven์€ Java ์ „์šฉ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ, Lifecycle ๊ด€๋ฆฌ ๋ชฉ์  ๋นŒ๋“œ ๋„๊ตฌ์ด๋ฉฐ, Apache Ant์˜ ๋Œ€์•ˆ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
์•„ํŒŒ์น˜ ๋ผ์ด์„ผ์Šค๋กœ ๋ฐฐํฌ๋˜๋Š” ์˜คํ”„ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์ด๊ณ , pom.xml์— ์ข…์† ๊ด€๊ณ„๋ฅผ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

clean - validate - compile - test - package - verify - install - site - deploy์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

๐Ÿ’ก Maven Lifecycle
(1) clean : ๋นŒ๋“œ ์‹œ ์ƒ์„ฑ๋˜์–ด์žˆ์—ˆ๋˜ ํŒŒ์ผ๋“ค์„ ์‚ญ์ œํ•œ๋‹ค.
(2) validate : ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„
(3) compile : ํ”„๋กœ์ ํŠธ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•˜๋Š” ๋‹จ๊ณ„
(4) test : ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„. ํ…Œ์ŠคํŠธ ์‹คํŒจ ์‹œ ๋นŒ๋“œ ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์Šคํ‚ต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
(5) package : ์‹ค์ œ ์ปดํŒŒ์ผ๋œ ์†Œ์Šค ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋“ค์„ jar, war ๋“ฑ์˜ ํŒŒ์ผ์˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“ ๋‹ค.
(6) verify : ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
(7) site : ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ์™€ ์‚ฌ์ดํŠธ ์ž‘์„ฑ, ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„
(8) deploy : ๋งŒ๋“ค์–ด์ง„ package๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— releaseํ•˜๋Š” ๋‹จ๊ณ„

Gradle

Gradle์€ Maven์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ๋ฒ”์šฉ ๋นŒ๋“œ ํˆด์ž…๋‹ˆ๋‹ค.
Ant Builder์™€ Groovy script๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์–ด ๊ธฐ์กด Ant์˜ ์—ญํ• ๊ณผ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋Šฅ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, SpringBoot์™€ Android์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
Maven์— ๋น„ํ•ด ๋นŒ๋“œ ์†๋„๊ฐ€ 10~100๋ฐฐ ๊ฐ€๋Ÿ‰ ๋น ๋ฅด๋ฉฐ, Java, C/C++, Python ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

โœ… Groovy
Groovy๋Š” JVM์—์„œ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ, JVM์—์„œ ๋™์ž‘ํ•˜์ง€๋งŒ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•  ํ•„์š” ์—†๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
Java์™€ ํ˜ธํ™˜๋˜๋ฉฐ, Java class file๋“ค์„ Groovy class๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Java ๋ฌธ๋ฒ•๊ณผ ์œ ์‚ฌํ•˜์—ฌ ๋นŒ๋“œ ์ฒ˜๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gradle์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ฐ„๊ฒฐํ•œ ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ๊ฐ€๋…์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์„ค์ • ์ฃผ์ž… ๋ฐฉ์‹(Configuration Injection)์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์— ์šฉ์ดํ•˜๊ณ  ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Maven vs Gradle
Gradle์€ ์ž‘์—… ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„์— ๊ธฐ๋ฐ˜, Maven์€ ๊ณ ์ •์ ์ด๊ณ  ์„ ํ˜•์ ์ธ ๋‹จ๊ณ„์˜ ๋ชจ๋ธ์— ๊ธฐ๋ฐ˜ํ•œ๋‹ค๋Š” ๋นŒ๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Gradle์€ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Maven๋ณด๋‹ค ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.
Maven์€ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ์—์„œ ํŠน์ • ์„ค์ •์„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ์† ๋ฐ›์•„์•ผํ•˜์ง€๋งŒ, Gradle์€ ์„ค์ • ์ฃผ์ž… ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.