maven

Apache Maven์€ ์ž๋ฐ”์šฉ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋„๊ตฌ๋กœ Apache Ant์˜ ๋Œ€์•ˆ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค. Apache License๋กœ ๋ฐฐํฌ๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด

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

  1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ด€๋ฆฌ๋ฅผ ๋งค์šฐ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

  2. ํ”„๋กœ์ ํŠธ์˜ ์ž‘์„ฑ๋ถ€ํ„ฐ compile, phase ๋“ฑ ํ”„๋กœ์ ํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด์— ํฌํ•จ๋˜๋Š” ๊ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง€์›ํ•ด์ค€๋‹ค.

  3. warํŒŒ์ผ ๊ธฐ๋ฐ˜์˜ ๋ฐฐํฌ์šฉ์œผ๋กœ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

war ์ด๋ž€? WAR(Web application ARchive, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„์นด์ด๋ธŒ) ํŒŒ์ผ์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์—์„œ ์ž๋ฐ”์„œ๋ฒ„ ํŽ˜์ด์ง€, ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ, ์ž๋ฐ” ํด๋ž˜์Šค, XML, ํŒŒ์ผ, ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ •์  ์›น ํŽ˜์ด์ง€ (HTML ๊ด€๋ จ ํŒŒ์ผ) ๋ฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•จ๊ป˜ ์ด๋ฃจ๋Š” ๊ธฐํƒ€ ์ž์›์„ ํ•œ๋ฐ ๋ชจ์•„ ๋ฐฐํฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” JAR ํŒŒ์ผ์ด๋‹ค.

LifeCycle

https://t1.daumcdn.net/cfile/tistory/9975E4405A533FDF1A

maven์—์„œ๋Š” **๋ฏธ๋ฆฌ ์ •์˜ํ•˜๊ณ  ์žˆ๋Š” ๋นŒ๋“œ ์ˆœ์„œ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด ์ˆœ์„œ๋ฅผ ๋ผ์ดํ”„์‚ฌ์ดํด(Lifecycle)**์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ๋ผ์ดํ”„ ์‚ฌ์ดํด์˜ ๊ฐ ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ Phase๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฐ ๊ฐ Phase๋“ค์€ ์˜์กด ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ํ•ด๋‹น Phase๊ฐ€ ์ˆ˜ํ–‰๋˜๋ ค๋ฉด ์ด์ „ ๋‹จ๊ณ„์˜ Phase๊ฐ€ ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

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

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

๊ฐ ๋‹จ๊ณ„
์„ค๋ช…

Clean

์ด์ „ ๋นŒ๋“œ์—์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ๋“ค์„ ์‚ญ์ œํ•˜๋Š” ๋‹จ๊ณ„

Validate

ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„

Compile

ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•˜๋Š” ๋‹จ๊ณ„

Test

์œ ๋‹›(๋‹จ์œ„) ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ ํ•˜๋Š” ๋‹จ๊ณ„(ํ…Œ์ŠคํŠธ ์‹คํŒจ์‹œ ๋นŒ๋“œ ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌ, ์Šคํ‚ต ๊ฐ€๋Šฅ)

Pacakge

์‹ค์ œ ์ปดํŒŒ์ผ๋œ ์†Œ์Šค ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋“ค์„ jar๋“ฑ์˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“œ๋Š” ๋‹จ๊ณ„

Verify

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ’ˆ์งˆ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„

Install

ํŒจํ‚ค์ง€๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์„ค์น˜ํ•˜๋Š” ๋‹จ๊ณ„

Site

ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„

Deploy

๋งŒ๋“ค์–ด์ง„ package๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— release ํ•˜๋Š” ๋‹จ๊ณ„

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์ด๋ธ์€ Clean, Default(Build), Site ํ‘œ์ค€ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์ง€์›ํ•œ๋‹ค.

  • Default(Build)๋Š” ์ผ๋ฐ˜์ ์ธ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•œ ๋ชจ๋ธ

๊ฐ ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์›ํ•˜๋Š” ๋‹จ๊ณ„๊นŒ์ง€๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ test ๋‹จ๊ณ„๋Š” ํฐ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ์— ๋ช‡์‹œ๊ฐ„์ด ์†Œ์š”๋ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋„๋ก ์Šคํ‚ต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

POM

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=http%3A%2F%2Fcfile30.uf.tistory.com%2Fimage%2F999BF0365A534021248CEE

POM์€ Project Object Model์˜ ์•ฝ์ž๋กœ POM์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด๋‹ค.

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

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

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

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

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, pom.xml ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ •์˜ํ•ด ๋†“์œผ๋ฉด Maven์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.

Maven Wrapper

Maven์„ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” Maven์„ ์„ค์น˜ํ•˜๊ณ , ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ํ•ด์ค˜์•ผํ•œ๋‹ค.

์ด๋•Œ mvnw, mvnw.cmd ์ด ์žˆ์œผ๋ฉด maven์„ ๋”ฐ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

mvnw๋Š” maven wrapper์˜ ์•ฝ์ž๋กœ, Maven์ด ์„ค์น˜๋˜์–ด์žˆ์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์—์„œ๋„ Maven์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. Maven์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉฐ, ๋งŒ์•ฝ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์„ค์ •ํ•˜๋ฉฐ, ๋ช…์‹œ๋œ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฒ„์ „์˜ Maven์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • mvnw : Maven์„ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ Maven์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์œ ๋‹‰์Šค shell script

  • mvnw.cmd : ์œ„ ์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์น˜ ๋ฒ„์ „

mvnw ์‹คํ–‰ํ•˜๊ธฐ

$ ./mvnw clean package

์ฐธ์กฐ๋ฌธ์„œ

Last updated

Was this helpful?