Maven(๋ฉ”์ด๋ธ)

2021. 5. 22. 15:40ยท๐Ÿ“ Language/โœ JAVA

Maven(๋ฉ”์ด๋ธ)

 

๋ฉ”์ด๋ธ

 

1. ๋นŒ๋“œ(Build)

  • ์†Œ์Šค ํŒŒ์ผ์„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ€๊ณต๋ฌผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • ๋˜๋Š” ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฌผ์ด๋‹ค.
  • ์ž‘์„ฑํ•œ ์†Œ์Šค(.java), ํ”„๋กœ์ ํŠธ์—์„œ ์“ฐ์ธ ํŒŒ์ผ ๋ฐ ์ž์›(.xml, .jpg, .jar, .properties)์„ JVM์ด๋‚˜ ํ†ฐ์บฃ ๊ฐ™์€ WAS๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ํŒจํ‚ค์ง• ํ•˜๋Š” ๊ณผ์ • ๋ฐ ๊ฒฐ๊ณผ๋ฌผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1) ๋นŒ๋“œ ๋„๊ตฌ(Build Tool)๋ž€?

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

 

2. Maven

  • ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์šฉ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ ์ดˆ๊ธฐ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋˜ Apache Ant์˜ ๋Œ€์•ˆ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด์ ์ธ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ด๋ฉฐ, ๋งŽ์€ ํŽธ๋ฆฌํ•จ์ด ์กด์žฌํ•ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.
  • ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํŠน์ • ๋ฌธ์„œ(pom.xml)์— ์ •์˜ํ•ด ๋†“์œผ๋ฉด ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊นŒ์ง€ ๊ด€๋ฆฌํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ค€๋‹ค.
  • ์ค‘์•™ ์ €์žฅ์†Œ๋ฅผ ํ†ตํ•œ ์ž๋™ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์ค‘์•™ ์ €์žฅ์†Œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋Š” ํŒŒ์ผ ์„œ๋ฒ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ณ , Maven์€ ์ž๊ธฐ ํšŒ์‚ฌ๋งŒ์˜ ์ค‘์•™ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๊ฐ„๋‹จํ•œ ์„ค์ •์„ ํ†ตํ•œ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

1) LifeCycle

Maven์€ ํ”„๋ ˆ์ž„์›Œํฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ž‘ ๋ฐฉ์‹์ด ์ •ํ•ด์ ธ ์žˆ๊ณ , ๋ฏธ๋ฆฌ ์ •์˜ํ•˜๊ณ  ์žˆ๋Š” ๋นŒ๋“œ ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค.

 

LifeCycle

 

ํฌ๊ฒŒ Default, Clean, Site ๋ผ์ดํ”„ ์‚ฌ์ดํด๋กœ ๋‚˜๋ˆ„๊ณ  ์„ธ๋ถ€์ ์œผ๋กœ ํŽ˜์ด์ฆˆ(phase)๊ฐ€ ์žˆ๋‹ค.

ํŽ˜์ด์ฆˆ๋Š” ์˜์กด(Dependency) ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ํŽ˜์ด์ฆˆ๊ฐ€ ์ˆ˜ํ–‰๋˜๋ ค๋ฉด ์ด์ „ ๋‹จ๊ณ„์˜ ํŽ˜์ด์ฆˆ๊ฐ€ ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

 

  • Default(Build): ์ผ๋ฐ˜์ ์ธ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ ๋ชจ๋ธ
  • Compile: ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋‹จ๊ณ„
  • Test: ์œ ๋‹›(๋‹จ์œ„) ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„๋กœ ํ…Œ์ŠคํŠธ ์‹คํŒจ ์‹œ ๋นŒ๋“œ ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. (์Šคํ‚ต ๊ฐ€๋Šฅ)
  • Pacakge: ์‹ค์ œ ์ปดํŒŒ์ผ๋œ ์†Œ์Šค ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋“ค์„ jar, war ๋“ฑ๋“ฑ์˜ ํŒŒ์ผ ๋“ฑ์˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“œ๋Š” ๋‹จ๊ณ„
  • Install: ํŒจํ‚ค์ง€๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์„ค์น˜ํ•˜๋Š” ๋‹จ๊ณ„
  • Deploy: ๋งŒ๋“ค์–ด์ง„ package๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— release ํ•˜๋Š” ๋‹จ๊ณ„
  • Clean: ๋นŒ๋“œ ์‹œ ์ƒ์„ฑ๋˜์—ˆ๋˜ ํŒŒ์ผ๋“ค์„ ์‚ญ์ œํ•˜๋Š” ๋‹จ๊ณ„
  • Site: ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ์™€ ์‚ฌ์ดํŠธ ์ž‘์„ฑ, ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„
  • Validate: ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„
  • Verify: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„

 

2) ์„ค์ • ํŒŒ์ผ

  • settings.xml: Maven Tool๊ณผ ๊ด€๋ จํ•œ ์„ค์ • ํŒŒ์ผ๋กœ MAVEN_HOME/conf ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์œ„์น˜ํ•œ๋‹ค.
  • pom.xml: POM(Project Object Model)์„ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋‚ด ๋นŒ๋“œ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

 

3) ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

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

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ ์  ๋Š˜์–ด๋‚  ๊ฒƒ์ด๊ณ  ๋งŽ์•„์งˆ์ˆ˜๋ก ๊ด€๋ฆฌ๋„ ํž˜๋“ค ๊ฒƒ์ด๋‹ค. ๊ฐœ๋ฐœ์ž ๋ชจ๋‘ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณ„์†ํ•ด์„œ ๊ณต์œ ํ•˜๊ณ  ํ•จ๊ป˜ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import ํ•˜๋Š” ๊ฒƒ๋ณด๋‹จ pom.xml๋งŒ ๊ณต์œ ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค. ๋˜ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•˜์œ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊นŒ์ง€ ๋ฒ„์ „์— ๋งž๊ฒŒ ๋ฐ›์•„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๋„ ์šฉ์ดํ•˜๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Language/โœ JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring][ํ˜ผ๊ณต] 2. ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ - ์‚ดํŽด๋ณด๊ธฐ (1)
  • [Spring][ํ˜ผ๊ณต] 1. ์ค€๋น„
  • JSP์™€ Servlet
  • Spring๊ณผ SpringBoot
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
Maven(๋ฉ”์ด๋ธ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”