본문 바로가기

Programing/OpenSource

[Gradle] 3.4 부터 의존성 선언이 바뀌었다.

예전에는 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만 재빌드

따라서 불필요한 빌드를 제어할 수 있게되어 빌드 시간을 줄일 수 있다.