๋น๋(Build) ?
์ปดํ์ผ(Compile)๊ณผ ๋งํฌ(Link)๋ฅผ ํฉ์ณ์ ๋ถ๋ฅด๋ ์ฉ์ด
- ์ปดํ์ผ(Compile) : ์์ฑํ ์์ค ์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ์์
- ๋งํฌ: obj ํ์ผ๋ค์ ์ฐ๊ฒฐํ์ฌ ํ๋์ exe ํ์ผ์ ๋ง๋๋ ์์
์์ค์ฝ๋ ํ์ผ์ ์ปดํจํฐ์์ ์คํํ ์ ์๋ ๋ ๋ฆฝ์ ์ธ ํํ๋ก ๋ณํํ๋ ๊ณผ์ ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๋งํจ
๋น๋ ๊ด๋ฆฌ ๋๊ตฌ
์์ค์ฝ๋์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ฉด์ ์ฌ๋ฌ๊ฐ์ง ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ,
๋น๋ ๊ด๋ฆฌ๋๊ตฌ๋ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํ ํ์์์ด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ๋ ๊ฒ
๋น๋ ๊ด๋ฆฌ ๋๊ตฌ๊ฐ ๋์ํ๋ ํ๋ฆ
1. ์์ค์ฝ๋(.java)๋ฅผ ์ปดํ์ผํ์ฌ ํด๋์ค ํ์ผ(.class) ์์ฑ
2. ์ฝ๋ฉ ๊ท์ฝ์ ๋ง๊ฒ ์์ฑํ๋์ง ํ์ธ
3. ์ฝ๋๋ฅผ ์ ์ ์ผ๋ก ํด์
4. test๋ฅผ ์งํํ๊ณ ํ ์คํธ ๊ฒฐ๊ณผ๋ ์ปค๋ฒ๋ฆฌ์ง ์ธก์ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํฌํธ๋ก ์ถ๋ ฅ
5. JavaDoc.๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ์์ฑํจ
6. ํด๋์ค ํ์ผ๊ณผ ๋ฆฌ์์ค ํ์ผ์ ํจํค์งํ์ฌ ์์ถํ์ผ์ ๋ง๋ฌ(.jar ํน์ .war)
7. ์์ถ ํ์ผ์ ํ ์คํธ ํน์ ์คํ ์ด์ง ํ๊ฒฝ์ ๋ฐฐํฌ
8. ์์ถ ํ์ผ์ ์ ์ฅ์์ ๋ฑ๋ก
๋น๋๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์
ํ๋ก์ ํธ ๋จ์๊ฐ ์ปค์ง๊ฒ ๋๋ฉด, ๋ฌด์์ ๋น๋ํ ์ง, ์ด๋ค ์์๋ก ํ ์ง, ์ด๋ค ์์กด์ฑ์ด ์๋์ง ๋ชจ๋ ์ถ์ ํ๊ธฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์๋์ผ๋ก ํธ์ถํ๋ ๊ฒ์ด ํ๋ค์ด์ง๊ฒ ๋๋ค.
์ด๋ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ด๋ฅผ ์ผ๊ด์ฑ์๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค.
Maven
- Java ์ ์ฉ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋๊ตฌ๋ก Lifecycle ๊ด๋ฆฌ ๋ชฉ์ ๋น๋ ๋๊ตฌ
- Apache ๋ผ์ด์ผ์ค๋ก ๋ฐฐํฌ๋๋ ์คํ ์์ค ์ํํธ์จ์ด
- ๊ธฐ์กด์ Ant์๋ '๋ณต์กํ ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ๋น๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฅํฉํด์ ธ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์'์ง๋ ๋จ์ ๊ณผ, '๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๊ฐ ์กด์ฌํ์ง ์๋' ๋จ์ ์ด ์์๋๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ Build Tool ์ด๋ค. - Ant ์ ๋น๋ ์๋ช ์ฃผ๊ธฐ (lifecycle) ๊ฐ๋ ์ ์ถ๊ฐ.
Maven์ ํน์ง
1. Lifecycle ๊ด๋ฆฌ ๋๊ตฌ๋ก, ์ ํด์ง ์๋ช ์ฃผ๊ธฐ์ ์ํด ์์ ์ ์ํํ๋ฉฐ, ์ ๋ฐ์ ์ธ ํ๋ก์ ํธ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์.
2. ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ pom.xml ์ ์ ์ํ๋ค. ์ด๋ฅผ ํ๋ก์ ํธ ๋ชจ๋ธ๋ง์ด๋ผ๊ณ ํจ.
* pom(Project Object Model) : ํ๋ก์ ํธ ์ ๋ณด(ํ๋ก์ ํธ ์ด๋ฆ, ๋ผ์ด์ผ์ค), ๋น๋ ์ค์ (์์ค, ๋ฆฌ์์ค, lifecycle ๋ณ ์คํํ plugin ๋ฑ ๋น๋ ๊ด๋ จ ์ค์ ), ๋น๋ ํ๊ฒฝ(์ฌ์ฉ์ ํ๊ฒฝ ๋ณ๋ก ๋ฌ๋ผ์ง ์ ์๋ ํ๋กํ ์ ๋ณด), POM ๊ด๊ณ(์์กด ํ๋ก์ ํธ, ๋ชจ๋, ์์ ํ๋ก์ ํธ ๋ฑ...) ์ ๋ด๊ณ ์์.
Gradle
- Maven์ ๋์ฒดํ ์ ์๋ ํ๋ก์ ํธ ๊ตฌ์ฑ ๊ด๋ฆฌ ๋ฐ ๋ฒ์ฉ ๋น๋ ํด
- Ant Builder์ Groovy script๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ๊ธฐ์กด Ant์ ์ญํ ๊ณผ ๋ฐฐํฌ Script์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- Springboot ์ Andriod์์ ์ฌ์ฉ๋จ
- ๋น๋ ์๋๊ฐ Maven์ ๋นํด 10~100๋ฐฐ ๊ฐ๋ ๋น ๋ฅด๋ฉฐ, jave, C/C++, Python ๋ฑ์ ์ง์
Gradle ํน์ง
1. ์ฝ๋ฉ์ ์ํ ๊ฐ๊ฒฐํ ์ ์๊ฐ ๊ฐ๋ฅํด ๊ฐ๋ ์ฑ์ด ์ข์
2. ์ค์ ์ฃผ์ ๋ฐฉ์(Configuration Injection)์ ์ฌ์ฉํ๋ฏ๋ก ์ฌ์ฌ์ฉ์ ์ฉ์ด
3. Build Script ๋ฅผ Groovy ๊ธฐ๋ฐ์ DSL(Domain Specific Language)๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ก์ ์ค์ ์ ๋ณด๋ฅผ ๊ตฌ์ฑํ๋ฏ๋ก ๊ตฌ์กฐ์ ์ธ ์ฅ์ ์ด ์์.
4. ๋ณ๋์ ์ค์น ์์ด Gradle wrapper ๋ฅผ ์ด์ฉํ์ฌ ๋น๋๋ฅผ ์ง์ํ์ฌ ํธ๋ฆฌํ๋ค.
5. ๋ฉํฐ ํ๋ก์ ํธ ๋น๋๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ค๊ณ๋ ๋น๋ ๊ด๋ฆฌ ๋๊ตฌ
6. Maven์ ์์ ์ง์
๋ฒ์ธ
1. Make: ๋น๋ ๊ฐ๋ ํ๋ฆฝ
2. Ant: ๋ฒ์ฉ์ฑ ๋์ (= cross flatform ๋์)
3. Maven: ๊ท์น ๊ธฐ๋ฐ์ ๋น๋ ์คํฌ๋ฆฝํธ ์์ฑ ํจ์จ ํฅ์. ๊ท์น์ ๋ฐ๋ผ ํ๋ก์ ํธ ๊ตฌ์กฐ(๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ)๋ฅผ ๋ง๋ ๋ค.
4. Gradle: ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ํ๊ทํ์ฌ ์ ์ฐ์ฑ์ ๋ํ๋ค.