๐Ÿ“˜ Programming/Spring

[Spring Framework] 2. ๋ฉ”์ด๋ธ(Maven)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!

ํ•œ์ฝ”๋”ฉ 2021. 8. 7. 17:14
728x90
728x90

ํ•™์Šต ๋ชฉํ‘œ

1. Maven ๊ธฐ๋ณธ ์ •์˜ ์ดํ•ด
2. Maven ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• ์ดํ•ด
3. Maven ๋นŒ๋“œ ์ž๋™ํ™” ๊ธฐ๋Šฅ ์ดํ•ด
4. Maven ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

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

๋นŒ๋“œ ์ž๋™ํ™” + ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ

  1. ํ”„๋กœ์ ํŠธ (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ๊ด€๋ฆฌ
    • pom.xml → ํ”„๋กœ์ ํŠธ ๊ด€๋ จ jar ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๊ด€๋ฆฌ
    • ํ”„๋กœ์ ํŠธ ์‚ฐ์ถœ๋ฌผ์„ ์ผ๊ด€๋œ ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ
  2. ๋นŒ๋“œ ์ž๋™ํ™”
    • ๋นŒ๋“œ ์ž‘์—… ๊ฐ„์†Œํ™” ๋ฐ ์ผ๊ด€์„ฑ
    • ์ผ๊ด€์„ฑ ์žˆ๋Š” ํ†ตํ•ฉ ํ™˜๊ฒฝ ์ œ๊ณต
    • ๋นŒ๋“œ (Build) : ์†Œ์Šค์ฝ”๋“œ → ์‹คํ–‰ ์ฝ”๋“œ ๋ณ€ํ™˜ ํ›„, ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •

 

1. ๋ฉ”์ด๋ธ์˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

  • ๊ฐœ๋ฐœ์ž ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ์„ค์ •์„ ๋ฉ”์ด๋ธ์ด ๋ฏธ๋ฆฌ ์ •์˜ํ•œ ์„ค์ •์œผ๋กœ ๋Œ€์ฒด
  • ์ •ํ˜•ํ™”๋œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๊ด€๋ฆฌ (pom.xml)
  • ์˜์กด์„ฑ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ → ํŽธ๋ฆฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ
    • ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž๋™ ๋‹ค์šด๋กœ๋“œ
    • ์ค‘์•™ ์ €์žฅ์†Œ
    • ๋กœ์ปฌ ์ €์žฅ์†Œ
  • ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ (pom.xml) → ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์œผ๋กœ ๋นŒ๋“œ ์ž๋™ํ™”

ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ธฐ๋ณธ ์„ค์ • (pom.xml)

  • ์›น ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ : ์ž๋ฐ” ์†Œ์Šค์™€ ๋ฆฌ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์›น ์ž์›์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ณ„๋„์˜ webapp ๋””๋ ‰ํ† ๋ฆฌ ์‚ฌ์šฉ

  1. ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ ๊ฒฝ๋กœ (source code) → ${basedir}/src/main/java
  2. ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ (resources) → ${basedir}/src/main/resources
  3. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ (Tests) → ${basedir}/src/main/test
  4. Distributable JAR → ${basedir}/target
  5. ์ปดํŒŒ์ผ๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ → ${basedir}/target/classes

pom.xml - ์˜์กด๊ด€๊ณ„ (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ์„ค์ •

  • 1 ํ”„๋กœ์ ํŠธ → 1 pom.xml
  • ํ•„์ˆ˜ ํ•„๋“œ 3๊ฐ€์ง€
    1. groupId : ํ”„๋กœ์ ํŠธ ๊ณ ์œ  ๋„๋ฉ”์ธ (net.developia)
    2. artifactId : ํ”„๋กœ์ ํŠธ ๋ช… (xcimvc)
    3. version : ํ”„๋กœ์ ํŠธ ๋ฒ„์ „
  • dependency : ํ”„๋กœ์ ํŠธ ์˜์กด๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ
  1. ์ง€์—ญ ์ €์žฅ์†Œ
    • ๋ฉ”์ด๋ธ์„ ๋นŒ๋“œํ•  ๋•Œ, ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ด€๋ฆฌ
    • USER_HOME/.m2/repository
    • ๋‹ค์šด๋กœ๋“œํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌ ์‹œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ
    • groupId์™€ artifactId ์•„๋ž˜์— ๊ฐ ๋ฒ„์ „์— ๋”ฐ๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ
  2. ์ค‘์•™ ์ €์žฅ์†Œ
    • ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฉ”์ด๋ธ ํ”Œ๋Ÿฌ๊ทธ์ธ, ๋ฉ”์ด๋ธ ์•„ํ‚คํƒ€์ž… ๊ด€๋ฆฌ
  3. ์›๊ฒฉ ์ €์žฅ์†Œ
    • ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด ์ค‘์•™ ์ €์žฅ์†Œ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌ

์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ ์šฉ ์Šค์ฝ”ํ”„

์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์  ์ œํ•œ

  • Scope ์„ค์ •
    1. compile : ์Šค์ฝ”ํ”„ ๋ฏธ์„ค์ • ์‹œ, ๊ธฐ๋ณธ ์Šค์ฝ”ํ”„
    2. provided : ์ปดํŒŒ์ผ ์‹œ ์ง์ ‘ ์˜์กด์„ฑ์„ ์ฐธ์กฐ, ๋Ÿฐํƒ€์ž„ ์‹œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์˜์กด์„ฑ ์ œ๊ณต (ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ์„œ๋ธ”๋ฆฟ API)
    3. runtime : ์ปดํŒŒ์ผ ์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฝ์šฐ๋งŒ ์„ค์ •
    4. test : ํ…Œ์ŠคํŠธ ์‹œ์ ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์Šค์ฝ”ํ”„ ์„ค์ • ์‹œ ์‚ฌ์šฉ (JUnit)
    5. system : provided์™€ ๊ฐ™์ง€๋งŒ, ์ง์ ‘ jar ํŒŒ์ผ์„ ์ œ๊ณตํ•ด์•ผ ํ•จ
    6. import : ๋‹ค๋ฅธ POM์„ค์ • ํŒŒ์ผ์— ์ •์˜๋œ ์˜์กด ๊ด€๊ณ„ ์„ค์ •์„ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ์˜ด

 

2. ๋ฉ”์ด๋ธ์˜ ๋นŒ๋“œ ์ž๋™ํ™” ๊ธฐ๋Šฅ

๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต ํ”„๋ ˆ์ž„์›Œํฌ

  • ๋นŒ๋“œ ๋ผ์ดํ”„ ์‚ฌ์ดํด : ๋นŒ๋“œ ๋‹จ๊ณ„ (์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ, ํŒจํ‚ค์ง•, ๋ฐฐํฌ)
    • ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณจ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŽ˜์ด์ฆˆ๋“ค๋กœ ๊ตฌ์„ฑ
    • ๊ฐ ํŽ˜์ด์ฆˆ ๋ณ„๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰
    • ๊ฐ ํŽ˜์ด์ฆˆ
      1. ๋ฆฌ์†Œ์Šค ์ค€๋น„
      2. ์ปดํŒŒ์ผ
      3. ํ…Œ์ŠคํŠธ (JUnit)
      4. ํŒจํ‚ค์ง€
      5. ์„ค์น˜
      6. ๋ฐฐํฌ
  • ๊ณจ : ๊ฐ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…
  • ํ”Œ๋Ÿฌ๊ทธ์ธ : ์‹ค์ œ ๊ณจ์„ ์‹คํ–‰
    • ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ๋“ค์„ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ์ œ๊ณต
    • ํ”Œ๋Ÿฌ๊ทธ์ธ ์ข…๋ฅ˜
      1. clean
      2. compiler
      3. surefire
      4. jar
      5. war
      6. javadoc
      7. antrun
728x90
๋ฐ˜์‘ํ˜•