Maven - MoonGyeongHyeon/Keyword_Study GitHub Wiki
Maven
ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ฉด ๋จ์ํ ์์ ์ด ์์ฑํ ์ฝ๋๋ง์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ด ์๋๋ผ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํ์ฉํด์ ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ค. ์ด ๋ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๊ฐ ์์ญ๊ฐ๊ฐ ํจ์ฌ ๋์ด๊ฐ๋ ์ผ์ด ๋ฐ์ํด ์ด ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ํ๋ค์ด์ง๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ๋ฐ์ํ๋ค. Maven์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค ์ ์๋ค. ๋ด๊ฐ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฟ๋ง ์๋๋ผ, ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ํ๋๋ฐ์ ํ์ํ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊น์ง ๊ด๋ฆฌํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋์ผ๋ก ๋ค์ด๋ฐ์์ค๋ค.
Maven์ ํ๋ก์ ํธ์ ์ ์ฒด์ ์ธ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ๋๊ตฌ์ด๋ฉฐ ๋ง์ ํธ๋ฆฌํจ๊ณผ ์ด์ ๋ค์ด ์๋ค. ๊ทธ๋ฐ๋ฐ ์ถ์ธ๋ Gradle๋ก?
LifeCycle, Phase
Maven์์๋ ๋ฏธ๋ฆฌ ์ ์ํ๊ณ ์๋ ๋น๋ ์์๊ฐ ์์ผ๋ฉฐ ์ด ์์๋ฅผ LifeCycle
์ด๋ผ๊ณ ๋ ํ๋ค. ๋ผ์ดํ ์ฌ์ดํด์ ๊ฐ ๋น๋ ๋จ๊ณ๋ฅผ Phase
๋ผ๊ณ ํ๋ค. ๋ํ ๊ฐ Phase๋ ์์กด ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- Clean : ์ด์ ๋น๋์์ ์์ฑ๋ ํ์ผ๋ค์ ์ญ์ ํ๋ ๋จ๊ณ
- Validate : ํ๋ก์ ํธ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๊ณ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ๋ ๋จ๊ณ
- Compile : ํ๋ก์ ํธ์ ์์ค์ฝ๋๋ฅผ ์ปดํ์ผ ํ๋ ๋จ๊ณ
- Test : ์ ๋(๋จ์) ํ ์คํธ๋ฅผ ์ํ ํ๋ ๋จ๊ณ(ํ ์คํธ ์คํจ์ ๋น๋ ์คํจ๋ก ์ฒ๋ฆฌ, ์คํต ๊ฐ๋ฅ)
- Pacakge : ์ค์ ์ปดํ์ผ๋ ์์ค ์ฝ๋์ ๋ฆฌ์์ค๋ค์ jar๋ฑ์ ๋ฐฐํฌ๋ฅผ ์ํ ํจํค์ง๋ก ๋ง๋๋ ๋จ๊ณ
- Verify : ํตํฉ ํ ์คํธ ๊ฒฐ๊ณผ์ ๋ํ ๊ฒ์ฌ๋ฅผ ์คํํ์ฌ ํ์ง ๊ธฐ์ค์ ์ถฉ์กฑํ๋์ง ํ์ธํ๋ ๋จ๊ณ
- Install : ํจํค์ง๋ฅผ ๋ก์ปฌ ์ ์ฅ์์ ์ค์นํ๋ ๋จ๊ณ
- Site : ํ๋ก์ ํธ ๋ฌธ์๋ฅผ ์์ฑํ๋ ๋จ๊ณ
- Deploy : ๋ง๋ค์ด์ง package๋ฅผ ์๊ฒฉ ์ ์ฅ์์ release ํ๋ ๋จ๊ณ
Phase์ Goal
Maven์์ ์ ๊ณต๋๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค. Maven์ LifeCycle์ ํฌํจ๋์ด ์๋ Phase๋ง์ ๋ ํ๋ฌ๊ทธ์ธ์ ํตํ์ฌ ์ค์ง์ ์ธ ์์ ์ด ์ํ๋๋ค. ์ฆ, ๊ฐ๊ฐ์ Phase๋ ์ด๋ค ์ผ์ ํ ์ง ์ ์ํ์ง ์๊ณ ์ด๋ค ํ๋ฌ๊ทธ์ธ์ Goal์ ์คํํ ์ง ์ค์ ํ๋ค.
Maven์์๋ ํ๋์ ํ๋ฌ๊ทธ์ธ์์ ์ฌ๋ฌ ์์
์ ์ํํ ์ ์๋๋ก ์ง์ํ๋ฉฐ, ํ๋ฌ๊ทธ์ธ์์ ์คํํ ์ ์๋ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ(๋ช
๋ น)์ Goal
์ด๋ผ๊ณ ํ๋ค.
POM
pom์ Project Object Model์ ์ฝ์๋ก, ์ด๋ฆ ๊ทธ๋๋ก Project Object Model์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ์ผ์ด๋ค. ์ด ํ์ผ์์ ์ฃผ์ํ๊ฒ ๋ค๋ฃจ๋ ๊ธฐ๋ฅ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ๋ก์ ํธ ์ ๋ณด: ํ๋ก์ ํธ ์ด๋ฆ, ๊ฐ๋ฐ์ ๋ชฉ๋ก, ๋ผ์ด์ผ์ค ๋ฑ
- ๋น๋ ์ค์ : ์์ค, ๋ฆฌ์์ค, ๋ผ์ดํ ์ฌ์ดํด ๋ณ ์คํํ ํ๋ฌ๊ทธ์ธ(goal) ๋ฑ ๋น๋์ ๊ด๋ จ๋ ์ค์
- ๋น๋ ํ๊ฒฝ: ์ฌ์ฉ์ ํ๊ฒฝ ๋ณ๋ก ๋ฌ๋ผ์ง ์ ์๋ ํ๋กํ์ผ ์ ๋ณด
- POM ์ฐ๊ด ์ ๋ณด: ์์กด ํ๋ก์ ํธ(๋ชจ๋), ์์ ํ๋ก์ ํธ, ํฌํจํ๊ณ ์๋ ํ์ ๋ชจ๋ ๋ฑ
POM์ pom.xml ํ์ผ์ ๋งํ๋ฉฐ Maven์ ๊ธฐ๋ฅ์ ์ด์ฉํ๊ธฐ ์ํด์ POM์ด ์ฌ์ฉ๋๋ค.