maven
Last updated
Last updated
ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ฉด ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํ์ฉํด์ ๊ฐ๋ฐ์ ํ๊ฒ๋๋ค. ์ด ๋ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๊ฐ ์์ญ๊ฐ๊ฐ ํ์ฉ ๋์ด๋ฒ๋ฆฌ๋ ์ผ์ด ๋ฐ์ํด ๊ด๋ฆฌํ๊ธฐ๊ฐ ํ๋ค์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค. Maven์ ๋ด๊ฐ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฟ๋ง ์๋๋ผ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ํ๋๋ฐ์ ํ์ํ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊น์ง ๊ด๋ฆฌํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด์ ์๋์ผ๋ก ๋ค์ด๋ฐ์ ์ค๋ค. Maven์ ํ๋ก์ ํธ์ ์ ์ฒด์ ์ธ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ด๋ฆฌ๋ฅผ ๋งค์ฐ ์ฉ์ดํ๊ฒ ํด์ค๋ค.
ํ๋ก์ ํธ์ ์์ฑ๋ถํฐ compile, phase ๋ฑ ํ๋ก์ ํธ ๋ผ์ดํ์ฌ์ดํด์ ํฌํจ๋๋ ๊ฐ ํ ์คํธ๋ฅผ ์ง์ํด์ค๋ค.
warํ์ผ ๊ธฐ๋ฐ์ ๋ฐฐํฌ์ฉ์ผ๋ก๋ ์์ฃผ ์ฌ์ฉ๋๋ค.
war ์ด๋? WAR(Web application ARchive, ์น ์ ํ๋ฆฌ์ผ์ด์ ์์นด์ด๋ธ) ํ์ผ์ ์ํํธ์จ์ด ๊ณตํ์์ ์๋ฐ์๋ฒ ํ์ด์ง, ์๋ฐ ์๋ธ๋ฆฟ, ์๋ฐ ํด๋์ค, XML, ํ์ผ, ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ์ ์น ํ์ด์ง (HTML ๊ด๋ จ ํ์ผ) ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ๊ป ์ด๋ฃจ๋ ๊ธฐํ ์์์ ํ๋ฐ ๋ชจ์ ๋ฐฐํฌํ๋๋ฐ ์ฌ์ฉ๋๋ JAR ํ์ผ์ด๋ค.
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์ Project Object Model์ ์ฝ์๋ก POM์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ์ผ์ด๋ค.
ํ๋ก์ ํธ ์ ๋ณด : ํ๋ก์ ํธ์ ์ด๋ฆ, ๊ฐ๋ฐ์ ๋ชฉ๋ก, ๋ผ์ด์ผ์ค ๋ฑ
๋น๋ ์ค์ : ์์ค, ๋ฆฌ์์ค, ๋ผ์ดํ ์ฌ์ดํด๋ณ ์คํํ ํ๋ฌ๊ทธ์ธ(goal)๋ฑ ๋น๋์ ๊ด๋ จ๋ ์ค์
๋น๋ ํ๊ฒฝ : ์ฌ์ฉ์ ํ๊ฒฝ ๋ณ๋ก ๋ฌ๋ผ์ง ์ ์๋ ํ๋กํ์ผ ์ ๋ณด
POM ์ฐ๊ด ์ ๋ณด : ์์กด ํ๋ก์ ํธ(๋ชจ๋), ์์ ํ๋ก์ ํธ, ํฌํจํ๊ณ ์๋ ํ์ ๋ชจ๋ ๋ฑ
๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, pom.xml
์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํด ๋์ผ๋ฉด Maven์ ๋คํธ์ํฌ๋ฅผ ํตํด ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ๋๋ค.
Maven์ ์ฌ์ฉํ๊ธฐ์ํด์๋ Maven์ ์ค์นํ๊ณ , ํ๊ฒฝ๋ณ์ ์ค์ ์ ํด์ค์ผํ๋ค.
์ด๋ mvnw
, mvnw.cmd
์ด ์์ผ๋ฉด maven์ ๋ฐ๋ก ์ค์นํ์ง ์๊ณ ๋ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
mvnw๋ maven wrapper์ ์ฝ์๋ก, Maven์ด ์ค์น๋์ด์์ง ์๋ ํ๊ฒฝ์์๋ Maven์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ๋๊ตฌ์ด๋ค. Maven์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ, ๋ง์ฝ ๋ฒ์ ์ ๋ณด๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ์ต์ ๋ฒ์ ์ผ๋ก ์ค์ ํ๋ฉฐ, ๋ช ์๋ ๋ฒ์ ์ด ์์ผ๋ฉด ํด๋น ๋ฒ์ ์ Maven์ ์ฌ์ฉํ ์ ์๋ค.
mvnw : Maven์ ์ค์นํ์ง ์์๋ Maven์ ์คํ์ํฌ ์ ์๋๋ก ํด์ฃผ๋ ์ ๋์ค shell script
mvnw.cmd : ์ ์คํฌ๋ฆฝํธ์ ๋ฐฐ์น ๋ฒ์