인용: https://spring.io/guides/gs/gradle/
이래서 Gradle 빌드툴안에 maven이라는 단어가 들어간거다.
즉, dependencies안에 있는 라이브러리들은 컴파일시에도 필요하고 빌드시에도 필요한 dependencies인 것이다. 하지만 실질적으로 이 라이브러리가 사용되는 시점은 runtime혹은 test코드 실행시점이다.
Implementation이 붙으면 runtime때 실질적으로 사용되는 것이고 testImplementImplementation이 붙으면 test코드 실행시에 사용됨.
출처: https://www.youtube.com/watch?v=ntOH2bWLWQs
==>> 모두다 컴파일 언급되는 의존성이다. 하지만 실제 사용되는 것은 컴파일시점 혹은 런타임시점으로 구분된다. 예를들어 api는 컴파일, 런타임 모두에 사용되는 의존성이고 implementation은 실제로는 런타임시에 사용되는 의존성임. compileOnly는 컴파일시에만 runtimeOnly는 런타임시에만.