여니의 프로그래밍 study/Spring & Spring Boot

[스프링부트] 롬북 플러그인 설치 & compile, compileOnly,implementation

여니's 2022. 3. 21. 00:12

책에서는

compile('org..')를 사용하라고 했으나

프로젝트에서 사용하면

글씨가 회색으로 변하면서 비활성화가 됩니다.

 

그래서 compile과 compileOnly가

무슨 차이가 있는건지

알아봤습니다.

https://hack-jam.tistory.com/13

 

[Gradle] implementation vs compile

서론 Gradle dependency 관련해서 검색을 하다보면, 어떤 글에서는 implementation을 사용하고 어떤 글에서는 compile을 사용하는 경우가 있다. 사실 어떻게 사용해도 돌아가긴 해서, 음... 무슨 차이지?하고

bluayer.com

 

 

compileOnly는 의존성 옵션입니다.

compile 시에만 빌드하고, 빌드 결과물에는 포함되지 않습니다.

 

 

compile은 A라는 모듈이 수정되면, 

이 모듈을 직접 또는 간접의존하고 있는 다른 모듈들 또한 재빌드가 되어야 합니다.

 

 

일단 implementation, compile 은

모두 라이브러리를 적용시키는 키워드입니다. 

 

implementation은

A라는 모듈이 수정되면, 이 모듈을 직접 의존하고 있는 모듈만 재빌드(재컴파일)됩니다.

 

기존에 gradle에서 사용되고 있던 compile은 지원이 중단되었고,

implementation으로 대체가 되었습니다.

 

implementation을 사용하게 되면

연결된 Dependency의 수가 줄어들고,

변경되더라도 재빌드되는 모듈의 수가 적다보니

소요 시간이 적습니다. 

 

compile을 사용하게 되면,

연결된 모든 모듈의 API가 노출된다고 합니다.

(이런 단점 때문에 지원이 중단되었나 봅니다..)