header-img
Info :
728x90

๋นŒ๋“œ(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: ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ํšŒ๊ท€ํ•˜์—ฌ ์œ ์—ฐ์„ฑ์„ ๋†’ํ˜”๋‹ค.

 

 

 

728x90
๋”๋ณด๊ธฐ
FRONTEND/๊ณต๋ถ€