-
[Spring] Maven & GradleDEV ๐/JAVA Spring 2019. 2. 4. 21:39๋ฐ์ํ
์คํ๋ง ํ๋ ์์ํฌ(Spring Framework)์ ๋ํด ๊ณต๋ถ๋ฅผ ์์ํ๋ฉด์ ์ฒซ ์ฅ๋ถํฐ ๋๊ด์ ๋ถ๋ํ๋ค
Maven...? Gradle...? ๋ฌด์...?
gradle์ ์๋๋ก์ด๋ํ๋ฉด์ ์ธ๋ป์ธ๋ป ๋ณด๊ธดํ์ง๋ง ์ ์๋ฅผ ์๋ ค๊ณ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ตฌ๋ ํ๊ณ ๋์ด๊ฐ๋ค ํคํท^^
์ฌ๊ธฐ์ ๋ฉ์ด๋ธ๊ณผ ๊ทธ๋ ์ด๋ค์ '๋น๋ ํด' ์ธ๋ฏํ๋ ์ ๋ฆฌ๊ฐ ํ์ํ๋ค...!
* ๋น๋(build)๋?
์๋ฐ๋ก ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ค๊ณ ํ๋ฉด ์๋ฐ์ฝ๋๊ฐ ์์ ๊ฒ์ด๊ณ ๊ทธ์์์ ์ฌ์ฉ๋๊ณ ์์กดํ๋ ๋ค๋ฅธ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ปดํ์ผํ๊ณ ํจํค์ง ํ๋ ๊ณผ์ ์ ๋น๋๋ผ๊ณ ํ๋ค. ๋ํ์ ์ธ ๋น๋ ํด์๋ Ant, Apache Ivy, Maven๋ฑ์ด ์๋ค.
1 ์ํ์น ๋ฉ์ด๋ธ (Apache Maven)ํ๋ก์ ํธ์ ์ ์ฒด์ ์ธ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๋ ๋๊ตฌ
ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ์์ ์ด ์์ฑํ ์ฝ๋๋ฟ ์๋๋ผ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒ ๋๋ค
Maven์ ์ด ๋ ์ฌ์ฉ๋๋ ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ ๋๊ตฌ์ด๋ค
๋ด๊ฐ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฟ๋ง ์๋๋ผ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ํ๋๋ฐ์ ํ์ํ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊น์ง ๊ด๋ฆฌํ์ฌ
๋คํธ์ํฌ๋ฅผ ํตํด ์๋์ผ๋ก ๋ค์ด๋ฐ์ ์ค๋ค
๊ธฐ์กด์๋ Ant๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋์์ง๋ง Maven์ด Ant๋ฅผ ๋์ด์ ๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์ด์ฉํ๊ฒ ๋์๊ณ ,
์ต๊ทผ์๋ Gradle์ด ์ฃผ๋ก ์ฌ์ฉ๋๊ณ ์๋ค(ex Android Studio)
โถ ๋ฉ์ด๋ธ์ ์ฅ์ โ
1 ํธ๋ฆฌํ Dependency Library ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค
ํน์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ .jarํ์ผ ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค
์ด ๊ฒฝ์ฐ ๋ฉ์ด๋ธ pom.xml์ dependency๋ง ์ถ๊ฐ์ํจ๋ค๋ฉด ์์์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅด ๋ค์ด๋ฐ์ ์ค๋ค
์ด๋ฌํ ํน์ง์ผ๋ก ์ธํด ์ฌ๋ฌ๋ช ์ด์ ํ๋ก์ ํธ ์์ ์ ์งํํ ๊ฒฝ์ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ git๋ฑ๊ณผ ๊ฐ์ ๋๊ตฌ๋ก ์ฃผ๊ณ ๋ฐ์ง ์์๋
ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค!
2 ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ์ผ๊ด๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ ์งํ ์ ์๋ค
๋ฉ์ด๋ธ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋๋ฉด
src/main/java src/main/resources src/test/java src/test/resources
์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค
์ด๋ ๊ฒ ๋ฉ์ด๋ธ ํ๋ก์ ํธ๋ ๊ณตํต ๊ตฌ์ฑ์ ๊ฐ์ง๊ฒ ๋๊ณ
ํ๋ก์ ํธ์ ์ ๋ฐ์ ์ธ ๋ด์ฉ์ ๋ํด ์ด๋์ ๋ ์ ์ถํ ์ ์๊ฒ ๋๋ค
๋ฉ์ด๋ธ ํ ํ๋ฆฟ ํ๋ก์ ํธ๋ก ํ๋ก์ ํธ ์์ฑ ์ ํ๋ก์ ํธ์ ๋ผ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์๊ฒ ๋๋๋ฐ,
์ด๊ฐ์ ๊ธฐ๋ฅ์ ArcheType์ด๋ผ๊ณ ํ๋ค
3 ๋ฉ์ด๋ธ์ด ์ ๊ณตํ๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ ์ ์๋ค
4 ArcheType ๊ธฐ๋ฅ์ ํตํด ์ ๊ท ํ๋ก์ ํธ ์ ํ ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ ์ ์๋ค
2 GradleGradle์ Groovy๋ฅผ ์ด์ฉํ ๋น๋ ์๋ํ ์์คํ ์ด๋ค
Groovy์ ์ ์ฌํ ๋๋ฉ์ธ ์ธ์ด๋ฅผ ์ฑ์ฉํ์์ผ๋ฉฐ, ํ์ฌ ์๋๋ก์ด๋ ์ฑ์ ๋ง๋๋๋ฐ ํ์ํ
์๋๋ก์ด๋ ์คํ๋์ค์ ๊ณต์ ๋น๋ ์์คํ ์ด๊ธฐ๋ ํ๋ค. Java, C/C++, Python ๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ธ์ด๋ฅผ ์ง์ํ๋ค์ฌ๊ธฐ๊น์ง๊ฐ ์ํค๋ฐฑ๊ณผ์์ ๋งํ๋ Gradle์ด๋ค
+ ์ถ๊ฐ์ ์ผ๋กGradle์ ์์์ ์ธ๊ธํ ๊ฒ๊ณผ ๊ฐ์ด Grooby ๊ธฐ๋ฐ์ DSL(Domain Specific Language)๋ฅผ ์ฌ์ฉํ๊ณ ,์์กด์ฑ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ํด์ด๋ค๋น๋, ๋ฉํฐ ๋น๋, ์์กด์ฑ ๊ด๋ฆฌ์ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ,Gradle Wrapper๋ฅผ ์ด์ฉํ์ฌ Gradle์ด ์ค์น๋์ง ์์ ๊ณณ์์๋ ๋น๋๊ฐ ๊ฐ๋ฅํ๋ค
โถ Gradle์ ์ฅ์ โ
1 ๋ฉํฐ ํ๋ก์ ํธ
ํ๋์ Repository ๋ด์ ์ฌ๋ฌ ๊ฐ์ ํ์ ํ๋ก์ ํธ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค (๋ฉํฐ ํ๋ก์ ํธ ๊ตฌ์ฑ์ด ๊ฐ๋ฅ)
ํ๋์ ์ํฐํฉํธ(ex .jar)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ณ๋์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ Repository๋ฅผ ๊ตฌ์ฑํ ํ์๊ฐ ์๋ค
2 ์ ์ฐ์ฑ + ํ์ฅ์ฑ
Groovy ๊ธฐ๋ฐ ์คํฌ๋ฆฝํ ์ ํตํด ๋ค์ํ ๊ธฐ๋ฅ์ ์คํฌ๋ฆฝํธ ์์ ์ง์ ๊ตฌํํ ์ ์๋ค
์ง์ Task๋ฅผ ๊ตฌํํ๊ณ ํ๋ฌ๊ทธ ์ธ์ ๋ง๋ค์ด ๊ธฐ๋ฅ ์ถ๊ฐ๋ ๊ฐ๋ฅํ๋ค
3 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ๊ด๋ฆฌ
Gradle์ ํ์ฉํ๋ฉด ๊ฐํธํ๊ฒ ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํค์ง๋ช , ๋ฒ์ ์ ์ง์ ํ๋ฉด ์๋์ผ๋ก ๋ค์ด๋ก๋ ๋๋ค
๋ํ ๋ค์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ ๋ฒ์ ์ถฉ๋(Version Conflict)์ด ๋ฐ์ํ ์ ์๋๋ฐ ์ด๊ฒ ๋ํ Gradle์ด ์๋์ผ๋ก ๊ด๋ฆฌํ๋ค
4 ๋ชจ๋ํ ๊ฐ๋ฐ(Modular development)
ํต์ฌ ๋ก์ง์ ๋ณ๋์ ๋ชจ๋๋ก ์ถ์ถํ ์ ์๋ค
ํ๋ถ์์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ AAR๋ก ๋ฐ์ผ๋ฉด ํ๋์ APK๋ก ํตํฉ๋ ๊ฐ๋ฅํ๋ค
๋ชจ๋ํ ๊ฐ๋ฐ์ ์์ค์ฝ๋๋ก ๋น๋ํ์ฌ ํตํฉํ ์ ์๊ณ AAR๋ก ๋ฃ์ ์๋ ์๋ค. ๋น์ฐํ ๊ธฐ์กด์ jar ํ์ผ๋ ํฌํจ ๊ฐ๋ฅํ๋ค๋ฐ์ํ'DEV ๐ > JAVA Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์ดํด๋ฆฝ์ค Maven Repository ๊ฒฝ๋ก ์ค์ (0) 2023.08.21 [JAVA] ์ค์ผ์ค๋ฌ @Scheduled cronํํ์ (0) 2022.06.23 [JAVA] ์ธ์ ์๊ฐ ์ค์ _ SessionTimeOut (0) 2022.03.17 [JAVA] ์ฒจ๋ถํ์ผ ๋ค์ด๋ก๋ ์ ํ๊ธ์ ๋ชฉ ๊นจ์ง ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ (0) 2021.08.27 [Spring] ์ ์์ ๋ถํ๋ ์์ํฌ์์ CORS ๋ฌธ์ ํด๊ฒฐํ๊ธฐ (0) 2021.08.11