๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring

[Spring] Maven ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ

by ์ฃผ๋ฐœ2 2021. 2. 9.
๋ฐ˜์‘ํ˜•

โ€ข ์•ˆ๋…•ํ•˜์„ธ์š”~ ์ด์ „์— ์šด์˜ํ•˜๋˜ ๋ธ”๋กœ๊ทธ ๋ฐ GitHub, ๊ณต๋ถ€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” Study-GitHub ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!

โ€ข ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ

โ€ข GitHub

โ€ข Study-GitHub

โ€ข ๐Ÿ”


โœ” ์Šคํ”„๋ง - Maven ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ(Multi-Module) ํ”„๋กœ์ ํŠธ ์…‹ํŒ…ํ•˜๊ธฐ(IntelliJ)

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ ์‹œ๊ฐ„์— ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ Maven ๊ธฐ๋ฐ˜์˜ Spring์—์„œ ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ ์…‹ํŒ…ํ•˜๊ธฐ์ž…๋‹ˆ๋‹ค.

 

 

 

 ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ์ด๋ž€ ? 

ํ•œ ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋ชจ๋“ˆ๋“ค์„ ๊ตฌ์„ฑํ•˜๊ณ , ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋Š”๋ฐ์š”, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๋ถ„ํ• ํ•ด์„œ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๋กœ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” !
woowabros.github.io/study/2019/07/01/multi-module.html

 

 

 

 

โœ” ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

โ€ข ๋จผ์ € Maven ๊ธฐ๋ฐ˜ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    โ€ข Spring Initializer > Maven ์„ ํƒ ํ•˜๊ณ  ์ „๋ถ€ Next๋ฅผ ๋ˆ„๋ฅด๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

โ€ข pom.xml ์— packaging ํƒœ๊ทธ์— pom์„ ์ž‘์„ฑํ•˜๊ณ  maven์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

(ํŒจํ‚ค์ง•์„ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด Maven ๋ชจ๋“ˆ ์ƒ์„ฑ ์‹œ ์ž‘์—…์ด ์ง„ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

 

 

 

 

โœ” Module ์ƒ์„ฑ

โ€ข ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ์œผ๋ฉด Module์„ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

    โ€ข ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญ > New > Module ํด๋ฆญ

 

 

 

 

โ€ข Maven ์„ ํƒ ํ›„ Next

โ€ข Module name ์„ค์ • ํ›„ Finish๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    โ€ข Parent์— parent pom์ด ์ง€์ •๋˜์–ด ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

โ€ข ํ”„๋กœ์ ํŠธ์— child-module ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

โ€ข ๋˜ํ•œ child ํ”„๋กœ์ ํŠธ์˜ pom์— <parent> ํƒœ๊ทธ๋กœ ๋ถ€๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  โ€ป ์ด ํƒœ๊ทธ๊ฐ€ ๋ถ€๋ชจ ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

 

 

 

โ€ข ๋ถ€๋ชจ(parent) pom์— ๋ณด๋ฉด ์ƒ๋‹จ์— ์ „์—๋Š” ์—†๋˜ modules ํƒœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

* ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋ถ€๋ชจ(parent-module) ํ”„๋กœ์ ํŠธ์˜ pom์— web ๋””ํŽœ๋˜์‹œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

 

 

* child-module ํ”„๋กœ์ ํŠธ์˜ ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค๋‹ˆ๋‹ค.

(application.properties ์†์„ฑ์—์„œ ๋ณ€๊ฒฝํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)

 

server.port=8088

 

 

 

๊ทธ๋Ÿผ ๋ถ€๋ชจ ํ”„๋กœ์ ํŠธ๋Š” ํฌํŠธ๊ฐ€ 8080์ด๊ณ , ์ž์‹ ํ”„๋กœ์ ํŠธ๋Š” ํฌํŠธ๊ฐ€ 8088 ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋‘ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋™ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

โœ” parent-module ํ”„๋กœ์ ํŠธ

 

โœ” child-module ํ”„๋กœ์ ํŠธ

 

 

์„œ๋ฒ„๋กœ ์ ‘์†ํ•˜๋ฉด ๋‘ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ ๊ธฐ๋™๋œ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€