์ด์ ๋ ธ์ ๋ธ๋ก๊ทธ์ ๋น๋ ๊ด๋ฆฌ ๋๊ตฌ Maven๊ณผ Gradle ๋น๊ตํ๊ธฐ (2021.01.06)๋ก๋ถํฐ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๊ธ์ ๋๋ค.
๋น๋ ๊ด๋ฆฌ ๋๊ตฌ๋?
- ํ๋ก์ ํธ ์์ฑ, ํ ์คํธ ๋น๋, ๋ฐฐํฌ ๋ฑ์ ์์ ์ ์ํ ์ ์ฉ ํ๋ก๊ทธ๋จ
- ํ๋ก์ ํธ์์ ์์ฑํ java ์ฝ๋์ ํ๋ก์ ํธ ๋ด์ ํ์ํ ๊ฐ์ข xml, properties, jar ํ์ผ๋ค์ JVM์ด๋ WAS๊ฐ ์ธ์ํ ์ ์๋๋ก ํจํค์งํด์ฃผ๋ ๋น๋ ๊ณผ์ = ๋น๋ ์๋ํ ๋๊ตฌ
- ํ๋ก์ ํธ์ ํ์ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ข ๋ฅ์ ๋ฒ์ ๋ค, ์ข ์์ฑ ์ ๋ณด๋ฅผ ๋ช ์ํ์ฌ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ๊ด๋ฆฌํ๋ ๋๊ตฌ
Maven
Maven์ Java์ฉ ํ๋ก์ ํธ ๊ด๋ฆฌ๋๊ตฌ๋ก Apache์ Ant ๋์์ผ๋ก ๋ง๋ค์ด ์ก๋ค. ๋น๋ ์ค์ธ ํ๋ก์ ํธ, ๋น๋ ์์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ์์ฑ ๊ด๊ณ๋ฅผ pom.xml ์ ๋ช ์ํ๋ค. ์ธ๋ถ์ ์ฅ์์์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ฌ๊ทธ์ธ๋ค์ ๋ค์ด๋ก๋ ํ ๋ค์, ๋ก์ปฌ์์คํ ์ ์บ์์ ๋ชจ๋ ์ ์ฅํ๋ค.
์๋ฅผ๋ค์ด "Spring Boot Data JPA Starter" ๋ชจ๋์ด ํ์ํ๋ฉด Maven Repository์์ ํด๋น ๋ชจ๋์ ๊ฒ์ํ์ฌ xml ์ค์ ํ์ผ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค. (Maven์ฉ ์ฝ๋ ์ด์ธ์๋ gradle ๋ฑ ๋ค๋ฅธ ๋น๋ ๊ด๋ฆฌ์ฉ ์ฝ๋๋ ์๋ค.)
[Spring] ๋น๋ ๊ด๋ฆฌ ๋๊ตฌ Maven๊ณผ Gradle ๋น๊ตํ๊ธฐ.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.4.RELEASE</version>
</dependency>
Gradle
Apache Maven๊ณผ Apache Ant์์ ๋ณผ ์ ์๋ ๊ฐ๋ ๋ค์ ๋์์ผ๋ก์ ๋์จ ํ๋ก์ ํธ ๋น๋ ๊ด๋ฆฌ ํด์ด๋ค. (์์ ํ ์คํ์์ค) Groovy ์ธ์ด๋ฅผ ์ฌ์ฉํ Domain-specific-langauge๋ฅผ ์ฌ์ฉํ๋ค. (xml๋ณด๋ค ํจ์ฌ ๊ฐ๊ฒฐํ๋ค) ๊ฝค ํฐ ๊ท๋ชจ๋ก ์์๋๋ multi-project ๋น๋๋ฅผ ๋์ธ ์ ์๋๋ก ๋์์ธ๋์๋ค. ํ๋ก์ ํธ์ ์ด๋ ๋ถ๋ถ์ด ์ ๋ฐ์ดํธ๋์๋์ง ์๊ธฐ ๋๋ฌธ์, ๋น๋์ ์ ์ง์ ์ผ๋ก ์ถ๊ฐํ ์ ์๋ค. (์ ๋ฐ์ดํธ๊ฐ ์ด๋ฏธ ๋ฐ์๋ ๋น๋์ ๋ถ๋ถ์ ๋ ์ด์ ์ฌ์คํ๋์ง ์์, ๋น๋ ์๊ฐ์ด ํจ์ฌ ๋จ์ถ๋ ์ ์๋ค)
Maven VS Gradle
๋ ์์คํ ์ด ๋น๋์ ์ ๊ทผํ๋ ๋ฐฉ์์๋ ๋ช ๊ฐ์ง ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์ด ์๋ค.
- Gradle์ ์์ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐ๋ฉด Maven์ ๊ณ ์ ์ ์ด๊ณ ์ ํ์ ์ธ ๋จ๊ณ์ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๊ณ ํ๋ค. ์ฑ๋ฅ ์ธก๋ฉด์์๋ ๋ ๋ค ๋ค์ค ๋ชจ๋ ๋น๋๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ ์ ์์ง๋ง, Gradle์ ์ด๋ค task๊ฐ ์ ๋ฐ์ดํธ๋์๊ณ ์๋์๋์ง ์ฒดํฌํ๊ธฐ ๋๋ฌธ์ Incremental build๋ฅผ ํ์ฉํ๋ค. ์ด๋ฏธ ์ ๋ฐ์ดํธ๋ task์ ๋ํด์๋ ์์ ์ด ์คํ๋์ง ์์ผ๋ฏ๋ก ๋น๋ ์๊ฐ์ด ํจ์ฌ ๋จ์ถ๋๋ค.
→ ๋น๋ ์ค์ ๊ท๋ชจ๊ฐ ์ ์ ํค์ง๋ฉด ์ปค์ง์๋ก, ๋น๋ ์๊ฐ์ ์ฐจ์ด๋ Maven๊ณผ ๋น๊ตํ์ฌ ๊ฝค ๊ฒฉ์ฐจ๊ฐ ๋ฒ์ด์ง ์ ์์ ๊ฒ ๊ฐ๋ค.
- Maven์ ๊ฒฝ์ฐ ๋ฉํฐ ํ๋ก์ ํธ์์ ํน์ ์ค์ ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉํ๋ ค๋ฉด ์์์ ๋ฐ์์ผํ์ง๋ง, Gradle์ ์ค์ ์ฃผ์ ๋ฐฉ์์ ์ ๊ณตํ๋ค.
- Gradle์ concurent์ ์์ ํ ์บ์๋ฅผ ํ์ฉํ๋ค.
→ 2๊ฐ ์ด์์ ํ๋ก์ ํธ์์ ๋์ผํ ์บ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋ก overwrite๋์ง ์๋๋ก checksum ๊ธฐ๋ฐ์ ์บ์๋ฅผ ํ์ฉํ๊ณ , ์บ์๋ฅผ repository์ ๋๊ธฐํ์ํฌ ์ ์๋ค.
- ๊ณ ๋๋ก ์ฌ์ฉ์ ์ ์๋ ๋น๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐํธํ Gradle์ ์ฌ์ฉํ๋๊ฒ ํจ์ฌ ๋ซ๋ค.
์๋๋ ์บ์ ์ฌ์ฉ ์์ ์ฑ์ ๋ํ์ฌ ๋น์ฐํ Gradle๋ก ์ฌ์ฉํ๋๊ฒ ์ด๋์ด๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค. ๊ทธ๋ผ์๋ Gradle์ ์์ฉํ์ง ์๋ ์ด์ ๋ ์ด๋ฐ์ Maven์ Scope๋ฅผ ์ง์ํ์ง ์์๊ณ ์ฑ๋ฅ๋ฉด์์๋ ์์ค ๊ฒ์ด ์์๋ค. ์ด๋ฌํ ์ ์ ํ์ฌ์ ํด๊ฒฐ๋์์ง๋ง ์ฌ์ ํ ์ต์ํจ์ ๋ฌธ์ ์ ์๋ก์ด ๊ฒ์ ๋ฐฐ์ฐ๋ ๋น์ฉ์ ๋ฌธ์ , ์ด๋ก ์ธํด ํํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค๋ฅธ ํ์๋ ๋ฐฐ์์ผํ ๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๊ตฌ๊ธ ํธ๋ ๋๊ฐ ๊ทธ ์ฐจ์ด๋ฅผ ์ฌ์คํ ๋ณด์ฌ์ฃผ๊ณ ์๋ ๋ฏ ํ๋ค.
'๐ค Backend > SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@DataJpaTest ํ ์คํธ ์ค ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ฟผ๋ฆฌ ์์ธ ํด๊ฒฐํ๊ธฐ (0) | 2024.04.01 |
---|---|
Transaction ์ด๋? (0) | 2024.02.26 |
java.sql.SQLException: Incorrect string value (0) | 2024.02.25 |
์คํ๋ง jpa application.properties ์ค์ (0) | 2024.02.25 |
์คํ๋ง ๋ถํธ ํ๋ก์ ํธ์ ์๋ํ๋ธ์ Jacoco ๋ฑ๋กํ๊ณ ์ฝ๋ ํ์ง ํ์ธํ๊ธฐ (0) | 2024.02.25 |