예전에는 Spring Initializr 에서 Gradle Project 를 만들면 다음과 같이 의존성 선언이 만들어졌다.
dependencies {
compile 'org.springframework.boot:spring-boot-starter'
testCompile 'org.springframework.boot:spring-boot-starter-test'
}
그런데 어제 해보니 다음과 같이 바뀌었음을 알 수 있다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Gradle Wrapper 버전을 보니 5.4.1 이다.
이전 버전은 4.5.1 였다.
3.3에서 3.4의 문서를 보니 바뀐 것을 알 수 있었다.
3.3
3.4
gradlew 버전을 5.4.1로 올리고 의존성 확인을 하려고 아래의 명령을 쳤더니 implementation을 대신 치라고 나와서 알게되었다.
./gradlew dependencies --configuration compile
...
compile - Dependencies for source set 'main' (deprecated, use 'implementation' instead).
No dependencies
compile의 경우 implementation 이나 api로 대체가 가능하다. 의존 라이브러리 수정시 재빌드가 필요한 라이브러리인지 구별을 하게 끔 세분화 되었다고 한다.
A(target) <- B <- C
- api: target 변경시 B, C 모두 재빌드
- implemntation: target 변경시 B만 재빌드
따라서 불필요한 빌드를 제어할 수 있게되어 빌드 시간을 줄일 수 있다.
'Programing > OpenSource' 카테고리의 다른 글
[Sonarqube] Make sure using this hardcoded IP address is safe here. (0) | 2019.06.12 |
---|---|
[JUnit] JUnit 4 to 5 migration (0) | 2019.05.16 |
[Spring Boot] 2.0.2 -> 2.1.4 업데이트 후 TC 깨짐 (0) | 2019.05.15 |
[Gson] List 타입 추론 방법 feat Super Type Tokens (0) | 2019.05.07 |
[Lombok] @RequiredArgsConstructor 의 득과 실? (0) | 2019.04.19 |