JAVA/Spring Boot

Compile(API), Implement 차이점

주코식딩 2023. 5. 14. 11:03

Compile 은 해당 라이브러리가 의존하고 있는 모든 모듈를 불러오고 
Implement는 최소한의 모듈만 불러온다.

 

Implement가 성능상 유리한것이 확실한 만큼 거의 모든 Gradle 설정에 Implement가 사용되고 있다.

 

다만, 궁금한 점은 결국 Implement 사용시 라이브러리를 구성하는 모든 모듈를 불러오지는 않는다는 건데 

애초에 라이브러리가 효율적으로 의존성을 구성한게 아니라는 건지 불러오지 않아도 되는 모듈이 왜 존재하는지 이해가 잘 가지 않아서 찾아봤다.

 

문제 상황은 다음과 같다.

 

모듈 A - 모듈 B를 의존하는 라이브러리 X 가 있고

모듈 A - 모듈 C를 의존하는 라이브러리 Y 가 있을때,

 

complie을 사용하면 모듈 A를 중복해서 2번 빌드하게 되고 
implement를 사용하면 모듈 A를 한번만 빌드한다.