Programing/OpenSource
[Gradle] 3.4 부터 의존성 선언이 바뀌었다.
나모찾기
2019. 5. 16. 11:52
예전에는 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만 재빌드
따라서 불필요한 빌드를 제어할 수 있게되어 빌드 시간을 줄일 수 있다.