Build Tool์ ์ด๋ฌํ Task๋ค์ ์๋ํํ๊ฒ ํด์ฃผ๊ณ ๊ทธ๋ฐ Task๋ฅผ ๊ธฐ์ ํ ์ ์๊ฒ ๋์์ค๋๋ค. ๊ทธ๋ ๊ฒ ๊ธฐ์ ๋ ํ์ผ์ ๋น๋ ์คํฌ๋ฆฝํธ๋ก ๋ถ๋ฆ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋์ ์ด๋ป๊ฒ ๊ธฐ์ ํ๋์ง๊ฐ ๊ฐ ๋๊ตฌ๋ณ๋ก ๋ค๋ฅด๊ฒ ์ฃ ? Apache Maven์ XML๋ก ๊ธฐ์ ํ๊ณ Gradle์ Groovy๋ Kotlin์ผ๋ก ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค.
Maven์ ์์์ ๋งํ ๋น๋ ๋๊ตฌ๋ก์จ ์ฃผ๋ก์๋ฐ๊ธฐ๋ฐ์ ํ๋ก์ ํธ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. XML๊ธฐ๋ฐ์ผ๋ก ์ค์ ๋ชจ๋ธ์ ์ ๊ณตํ๊ณ pom.xml ํ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด xml ํ์ผ๋ง ๋ณด๋ฉด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ํ์ ํ ์ ์๋๊ฑฐ์ฃ . ์ฆ, ๋ฌด์จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ (Dependency ๋ค์ด ์กด์ฌํ๊ณ ) ์ด๋ค ๋น๋ ์์ ๋ค์ด ์๋์ง๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
๋น๋ ๋๊ตฌ๋ก์จ ์ฃผ๋ก ์๋ฐ๊ธฐ๋ฐ์ ํ๋ก์ ํธ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
XML๊ธฐ๋ฐ์ผ๋ก ์ค์ ๋ชจ๋ธ์ ์ ๊ณตํ๊ณ pom.xml ํ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
POM์ project object model์ ์ฝ์ด์ ๋๋ค.
Maven ํ๋ก์ ํธ๋ Project Object Model๋ก ์ ์ํ ์ ์๋๋ฐ์, ์ด POM์ pom.xml๋ก ๊ธฐ์ ํ๊ฒ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์น ๋ฌธ์๋ฅผ htmlํ์ผ๋ก ์์ฑํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ Document Object Model์ธ DOM์ ๋ง๋๋ ๊ฒ ์ฒ๋ผ pom.xml์ ์์ฑํ๋ฉด Maven์ด POM์ ๋ง๋ค๊ณ ๊ทธ POM์ ์ํด์ ํ๋ก์ ํธ์ dependency๊ฐ ๋ค์ด๋ฐ์์ง๊ณ ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋๊ณ ํฉ๋๋ค.
Maven์ archetypes๋ผ๋ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์ ๊ณตํด์ ๋งค๋ฒ ๊ฐ์ ์ค์ ์ ๋ฐ๋ณตํ์ง ์๊ฒ ๋์์ค๋๋ค.
ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ dependency ๋ฅผ ๊ด๋ฆฌํด์ค๋๋ค.
ํ๋ฌ๊ทธ์ธ๊ณผ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
dependency๋ฅผ ๋ค์ด๋ฐ๋ Repository๊ฐ ๋ก์ปฌ์ด ๋ ์๋ ์๊ณ , Maven Central์ ๊ฐ์ ๊ณต๊ฐ๋ Repository๊ฐ ๋ ์๋ ์์ต๋๋ค. (nexus๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๊ณต๊ฐ(Private) ๋ ํผ์งํ ๋ฆฌ ์์ฑ๊ฐ๋ฅ)
<scope>
compile: <scope />๋ฅผ ์ง์ ํ์ง ์๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ , ์ปดํ์ผ ์์กด์ฑ์ ํ๋ก์ ํธ์ ์ปดํ์ผ, ํ
์คํธ, ์คํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ ํ ๋ ์ฌ์ฉ
provided: JDK ๋๋ ์ปจํ
์ด๋๊ฐ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅด ์ ๊ณต ํ ๋ ์ค์ , ์ฆ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฒฝ์ฐ, JSP์ Servlet API๋ฑ์ provided์ ์์กด์ฑ์ผ๋ก ์ค์
runtime: ์ปดํ์ผ ์์๋ ์ฌ์ฉ๋์ง ์์ผ๋, ์คํ๊ณผ ํ
์คํธ ์์๋ ํ์ํ ๋ ์ค์ , ๋ํ์ ์ธ ์๊ฐ JDBC ๋๋ผ์ด๋ฒ
system: provided์์กด์ฑ๊ณผ ๋น์ทํ์ง๋ง, ์ฌ์ฉ์๊ฐ jar ํ์ผ์ ์์น๋ฅผ ์ง์ ํ๋ค๋ ์ ์ด ๋ค๋ฆ.
system์์กด์ฑ์ ์ฌ์ฉํ๋ ค๋ฉด <systemPath>..</systemPath> ์๋ฆฌ๋จผํธ๋ฅผ ์ด์ฉํ์ฌ jar ํ์ผ์ ์์น๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ง๋ค ๊ฐ๋ฐ ํ๊ฒฝ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ํ๋กํผํฐ๋ฅผ ์ด์ฉํ์ฌ jar ํ์ผ์ ์์น๋ฅผ ์ง์ ํ๋ ๊ฒ์ด ๊ถ์ฅ
test: ์คํ์๋ ์ฌ์ฉํ์ง ์์ผ๋, ํ
์คํธ ์ปดํ์ผ ๋ฐ ์คํ ์์ ํ์ํ ๋ ์ค์ , ๋ํ์ ์ธ ์๋ก๋ easymock, junit ๋ฑ์ด ์์ต๋๋ค.
</scope>
Gradle์ ๋ ๋ค๋ฅธ Build Tool๋ก์ Groovy ๊ธฐ๋ฐ์ผ๋ก ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ฒ ๋์์ค๋๋ค.
์ต๊ทผ์๋ ์ฝํ๋ฆฐ๋ ์ง์ํด์ ์ฝํ๋ฆฐ ๊ธฐ๋ฐ์ผ๋ก Build Script๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Installing the Spring Boot CLI on Windows
์ฌ์ ์์
์๋์ฐ JDK ์ค์น
๋ค์ด๋ก๋ ๋ฐ ๋ฐฐ์น
https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing.cli.manual-installation ํด๋ฆญํ์ฌ ๋ค์ด๋ก๋
spring-2.5.0.zip ์์ถํด์
spring-2.5.0 ํด๋๋ฅผ C:\ ๋ฃจํธ๋ก ์ด๋
ํ๊ฒฝ๋ณ์ ๋ฑ๋ก
(์๋์ฐ10) Win+X, Y
--- ๊ณ ๊ธ ์์คํ
์ค์
ํด๋ฆญ
์์คํ
์์ฑ
--- ๊ณ ๊ธ
--- [ํ๊ฒฝ ๋ณ์(N)...]
ํ๊ฒฝ ๋ณ์
--- ์์คํ
๋ณ์(S)
--- [์๋ก ๋ง๋ค๊ธฐ(W)...]
์ ์์คํ
๋ณ์
--- ๋ณ์ ์ด๋ฆ(N): SPRING_HOME
--- ๋ณ์ ๊ฐ(V): C:\spring-2.5.0
--- [ํ์ธ]
ํ๊ฒฝ ๋ณ์
--- ์์คํ
๋ณ์(S)
--- Path ์ ํ
--- [ํธ์ง(I)...] %SPRING_HOME%\bin ์ถ๊ฐ
--- [ํ์ธ]
spring init --build maven -j 16 -g org.prgrms -a kdt-spring-demo -n kdt-spring-demo -x kdt-spring-demo
-x ์์ถํด์
-g ๊ทธ๋ฃนID
-a ํ๋ก์ ํธ ๋ช
-n name
spring initializr ํ๋ก์ ํธ ์์ฑ์ ๋์๋๋ ์ฌ์ดํธ
์ ๋ช
๋ น์ด๋ก ๋งค๋ฒ ์์ฑํ๊ธฐ์๋ ์ง๊ด์ ์ด์ง ์์, ์ฌ์ดํธ์์ ์์ฑํ ์ ์์ต๋๋ค.
ํ์ง๋ง IntellJ๋ก๋ ํ๋ก์ ํธ ์์ฑ ํ ์ ์์ต๋๋ค.