일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스레드 풀
- HTTP
- java
- 정규화
- well-know port
- gatway
- MSA
- Kafka
- 자바
- 데이터베이스
- Redis
- Spring
- AWS
- 3-way handshaking
- JPA
- ocp
- 삽입 이상
- 비관적 락
- 자료구조
- 페이지네이션
- 삭제 이상
- Dirty Checking
- 낙관적 락
- Kotlin
- 네트워크
- buildSrc
- 갱신 이상
- DB
- 캐시 오염
- null
Archives
- Today
- Total
어 나 갱수.
[gradle] buildSrc를 사용해보자!!😜 본문
728x90
springboot와 kotlin을 사용해서 멀티모듈세팅을 하면서 의존성을 어떻게 관리해야 하는지에 대한 고민이 생겼고 buildSrc모듈을 사용해서 의존성관리와 버전관리를 해보자는 생각이 들었다. 이 글에서는 gradle의 buildSrc에 대해 알아보는 시간을 가져보겠습니다.
buildSrc란?
라이브러리 버전관리를 좀 더 편리하게 하기 위해 buildSrc를 활용할 수 있다.
왜 사용하지?
buildSrc를 이용하면 build script를 더 쉽게 유지보수하고 가독성을 향상시킬 수 있습니다.
dependencies {
/* kotlin */
implementation(Dependencies.KOTLIN_JDK)
implementation(Dependencies.KOTLIN_REFLECT)
/* logging */
implementation(Dependencies.LOGGING)
testImplementation(Dependencies.LOGGING)
}
구현
구현하는 방법은 매우 간단하다.
먼저 buildSrc 디렉토리를 만들어준다, 그리고 그 안에 build.gradle.kts라는 파일을 만들어준다.
plugins {
`kotlin-dsl`
}
repositories {
mavenCentral()
}
build.gradle.kts 파일 안에 이렇게 기재해주고 빌드를 한 번 시키면 끝난다.
여기서 중요한 점은 setting.gradle.kts 파일에서 buildSrc모듈을 기재하지 않는다.
그 이유는 개발자가 직접 사용하는 모듈이 아닌 의존성과 프로젝트 모듈을 위해 사용되는 모듈이기 때문이다.
이제 위처럼 작성하고 빌드를 마무리하면
object PluginVersions {
const val SPRING_BOOT_VERSION = "2.7.5"
const val DEPENDENCY_MANAGER_VERSION = "1.1.0"
const val JVM_VERSION = "1.7.22"
const val SPRING_PLUGIN_VERSION = "1.7.22"
const val JPA_PLUGIN_VERSION = "1.6.21"
const val ALL_OPEN_VERSION = "1.6.21"
const val KAPT_VERSION = "1.7.10"
}
위와 같이 PluginVersions와 같은 object 파일을 생성한다.
실제사용은 아래의 코드처럼 사용할 수 있습니다. 실제 버전을 작성하는 것이 아닌 buildSrc에서 선언한 변수가 들어가게 됩니다.
이런 식으로 사용함으로써 좀 더 유지보수 가능한 빌드도구 script가 만들어진 것을 확인할 수 있습니다.
Reference
728x90
'Spring' 카테고리의 다른 글
[Spring] @Bean과 @Component의 차이 👏 (1) | 2023.11.13 |
---|---|
[SpringBoot] Spring Security란? 👏🏿 (0) | 2023.09.02 |
[Spring] 디스패처 서블릿(Dispatcher Servlet)이란? 👍 (1) | 2023.08.02 |
[Spring] 필터(Filter)랑 인터셉터(Interceptor) 🐻 (1) | 2023.08.01 |
[Spring] 아직도 스프링의 3요소 모르는 사람?(DI, IOC, AOP) (0) | 2023.07.28 |