Maven

ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ข…์†๊ด€๊ณ„์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊นŒ์ง€ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋„๊ตฌ๋กœ ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด์ ์ธ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ๋กœ ๋นŒ๋“œ๊นŒ์ง€ ์ˆ˜ํ–‰

๋ผ์ดํ”„ ์‚ฌ์ดํด ์ข…๋ฅ˜

  • ๊ธฐ๋ณธ(Default)

    1. compile : ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ

    2. test : ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ฒŒ๋กœ (์ด๋ฅผ ์‹คํŒจ์‹œ ๋นŒ๋“œ ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌ)

    3. package -> ์‚ฐ์ถœ๋ฌผ ์ƒ์„ฑ (์‹ค์ œ ์ปดํŒŒ์ผ๋œ ์†Œ์Šค์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋“ค์„ jar๋“ฑ์˜ ๋ฐฐํฌ๋ฆ‰ ์œ„ํ•œ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“œ๋Š” ๋‹จ๊ณ„)

    4. install -> ๋กœ์ปฌ ์ €์žฅ์†Œ ๋ฐฐํฌ (ํŒจํ‚ค์ง€๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์„ค์น˜)

    5. deploy -> ์›๊ฒฉ ์ €์žฅ์†Œ ๋ฐฐํฌ (๋งŒ๋“ค์–ด์ง„ ํŒจํ‚ค์ง€๋ฅผ ์›๊ฒฉ์ €์žฅ์†Œ์— release)

  • clean

    1. clean : ์ด์ „ ๋นŒ๋“œ์—์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ๋“ค์„ ์‚ญ์ œ

  • site

    1. site -> ๋ฌธ์„œ ์‚ฌ์ดํŠธ ์ƒ์„ฑ (ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑ)

    2. site-deploy -> ์„œ๋ฒ„ ๋ฐฐํฌ

๊ฐ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์•ˆ์— phase๊ฐ€ ์กด์žฌํ•œ๋‹ค ๊ฐ phase๋ฅผ ํ†ตํ•ด maven๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๊ณ  ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ phase๋ฅผ ์‹คํ–‰ ํ–ˆ๋‹ค๋ฉด ์ด์ „ ๋‹จ๊ณ„์˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ชจ๋‘ ์ž๋™์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. (ex. mvn install, Run As, Maven clean๋“ฑ)

Phase๋Š” build ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ฐ๊ฐ์˜ ๋‹จ๊ฒŒ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์ด์ „์˜ ๋‹จ๊ณ„์˜ Phase๊ฐ€ ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

Maven์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘

๊ฐ๊ฐ์˜ Phase๋Š” ์–ด๋–ค ์ผ์„ ํ• ์ง€ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์–ด๋–ค ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ Goal์„ ์‹คํ–‰ํ• ์ง€ ์„ค์ •

๊ฐ phase์—๋Š” plugin์ด ์กด์žฌํ•˜์—ฌ ์ด plugin์—์„œ ์ˆ˜ํ–‰๊ฐ€๋Šฅํ•œ ๋ช…๋ น์„ goal์ด๋ผ๊ณ  ํ•œ๋‹ค. (ex. mvn plugin:goalํ˜•ํƒœ๋กœ jar:jar, resource:testResource ๋“ฑ์˜ ํ˜•ํƒœ )

ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์—ฌ๋Ÿฌ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋ฉฐ, ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ Goal์ด๋ผ๊ณ  ํ•œ๋‹ค.

pom.xml

Project Object Model์˜ ์•ฝ์ž๋กœ ํ”„๋กœ์ ํŠธ ๊ฐ์ฒด ๋ชจ๋ธ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ XMLํ˜•์‹์˜ ํŒŒ์ผ๋กœ ์ •์˜

๋‹ค๋ฃจ๋Š” ์ •๋ณด

  • ํ”„๋กœ์ ํŠธ ์ •๋ณด : ์ด๋ฆ„, ๊ฐœ๋ฐœ์ž ๋ชฉ๋ก, ๋ผ์ด์„ผ์Šค ๋“ฑ

  • ๋นŒ๋“œ ์„ค์ • : ์†Œ์Šค, ๋ฆฌ์†Œ์Šค, ๋ผ์ดํ”„ ์‚ฌ์ดํด ๋ณ„ ์‹คํ–‰ํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ

  • ๋นŒ๋“œ ํ™˜๊ฒฝ : ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ๋ณ„๋กœ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํŒŒ์ผ ์ •๋ณด

  • POM ์—ฐ๊ด€ ์ •๋ณด : ์˜์กด ๋ชจ๋“ˆ, ์ƒ์œ„ ํ”„๋กœ์ ํŠธ, ํ•˜์œ„ ๋ชจ๋“ˆ ๋“ฑ

    • dependency

      • scope : ๋ฒ”์œ„

      • optional : ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์˜์กด์„ฑ์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

maven๊ณผ gradle ์ฐจ์ด

mvn spring-boot:run๊ณผ java -jar ์ฐจ์ด

๋ณดํ†ต mvn์€ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ,ํ…Œ์ŠคํŠธ ๋ฐ ํŒจํ‚ค์ง•ํ•˜๋Š”๋ฐ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ๋กœ ์˜ฌ๋ฐ”๋ฅธ dependecy ๋ฒ„์ „์„ ํ•ด๊ฒฐํ•ด์ฃผ๊ฑฐ๋‚˜ ์‹คํ–‰๊ฐ€๋Šฅํ•œ jar/war ํŒŒ์ผ์˜ ๋ชจ๋“  dependecy๋ฅผ ํŒจํ‚ค์ง€ํ•˜๊ณ  java -jar์˜ -cp์˜ต์…˜์ด๋‚˜ ๊ฒฝ๋กœ ์ง€์ •์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

ํ•˜์ง€๋งŒ mvn์„ ํ†ตํ•œ ์‹คํ–‰์€ ์•„ํŒŒ์น˜ ํ†ฐ์บฃ์˜ ๋‹ค์šด๋กœ๋“œ์™€ ํ†ฐ์บฃ์˜ ์‹œ์ž‘์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  goal์— ๋งž๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๊ณ  ๋งŒ์ผ production์—์„œ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด maven ์„ค์น˜, jdk์„ค์น˜, ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ณต์‚ฌ, mvn ๋ชจ๋“  ์ƒ๋ช…์ฃผ๊ธฐ ์‹คํ–‰๊ณผ ๊ฐ™์ด ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ ์ธก๋ฉด์—์„œ ๋ชจ๋‘ ๋‚ญ๋น„๊ฐ€ ๋œ๋‹ค.

develop๋‹จ๊ณ„๋ผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ• ๋•Œ๋งˆ๋‹ค ์˜ฌ๋ฐ”๋ฅธ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋ฉฐ ๋‘˜์ด์ƒ์˜ ์„œ๋น„์Šค๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ๊ฒฝ์šฐ๋Š” ๋”๋”์šฑ ๋น„ํšจ์šธ์ ์ผ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿด๋•Œ๋Š” maven์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.


Reference

https://www.baeldung.com/spring-boot-run-maven-vs-executable-jar

Last updated