스프링 부트 Gradle
Gradle 은 의존관계가 있는 라이브러리를 함께 다운로드 합니다.
예시로 살펴보도록 하겠습니다. 저는 프로젝트 생성시 의존성을 spring-boot-starter-thymeleaf 와 spring-boot-starter-web을 추가했습니다. 그래서 build.gradle을 보면 다음과 같이 의존성이 추가된 것을 볼 수 있습니다.
하지만 저는 두 개의 의존성만 추가했는데 실제 추가된 라이브러리를 보니 다음과 같이 추가되어 있었습니다.
어떻게 추가하지않은 다음과 같은 라이브러리들이 존재하는걸까요?
맨 처음 언급했듯이 Gradle은 의존관계의 라이브러리를 함께 다운로드합니다. Gradle 목록을 클릭하여 한 번 살펴보겠습니다.
의존성을 추가하겠다고 명시했던 thymeleaf와 web이 추가되어있는 것을 확인할 수 있습니다. 저 의존성을 열어보면 해당 의존성을 추가하기위해서 필요한 라이브러리들이 계층적으로 나타나있는 것을 볼 수 있습니다.
스프링 부트 Gradle Plugin
그렇다면 위의 캡쳐본에서 라이브러리 옆에 명시된 버전은 어떤 기준으로 다운로드 되는걸까요? 한 번 알아보겠습니다.
Gradle은 Java 코드를 컴파일하는 기능과 같은 모든 유용한 기능은 플러그인 에 의해 추가됩니다.
우선 Plugin을 살펴보겠습니다.
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
제가 직접 추가한 것이 아니지만 기본적으로 plugins가 적용이 되어있습니다. 이는 무엇을 의미하는지 알아보도록 하겠습니다.
- org.springframework.boot : 플러그인을 단독으로 적용하면 프로젝트는 아무런 변화가 없습니다. 대신 다른 플러그인이 적용되는 시점을 감지하고 그에 따라 반응합니다. 예를들면, java 플러그인이 적용되면 실행 가능한 jar 빌드 작업이 자동으로 구성됩니다.
- io.spring.dependency-management : 이 플러그인을 적용하면 Spring Boot의 플러그인이 사용중인 Spring Boot 버전에서 Spring-boot-dependency bom을 자동으로 가져옵니다. 즉, Maven과 같은 종속성 관리 기능을 제공하는 Gradle 플러그인입니다. 이는 의존성을 추가할 때 버전을 생략할 수 있습니다.
io.spring.dependency-management 플러그인에 의해 Spring Boot dependency에 있는 버전을 자동으로 가져와서 버전에 대한 생략이 가능하다고 합니다.
실제 제가 예시로 만든 프로젝트의 build.gradle의 코드는 다음과 같습니다.
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'me.whiteship'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
정말 implementation을 보면 버전을 명시안해주었지만 다음과 같이 버전이 명시되어있는 것을 볼 수 있습니다.
어떤 버전을 가져오는지 궁금하거나 사용할 라이브러리의 버전이 궁금하다면 공식 홈페이지에서 확인도 가능합니다.
또는 github에서도 버전 확인이 가능합니다.
확인하고자 하는 spring-boot 버전을 선택한 뒤 spring-boot-dependencies -> build.gradle 을 들어가면 확인이 가능합니다. 저는 2.5.5 버전이라 2.5.x 를 선택한 뒤 보았습니다.
일부만 캡쳐를 했지만 정말 많은 라이브러리의 버전이 관리되고 있는 것을 확인할 수 있습니다.
참고한 사이트
'Spring' 카테고리의 다른 글
[Spring Boot] Error creating bean with name 'configurationPropertiesBeans' 에러 (0) | 2022.01.26 |
---|---|
[Spring] 빈 생명주기 콜백 (0) | 2022.01.19 |
[Spring] 스프링 시큐리티 알아보기 (0) | 2021.12.17 |
[Spring] JUnit5 사용하기 (0) | 2021.12.05 |
[Spring] gradle build 실행 에러 (0) | 2021.11.21 |
댓글