본문으로 바로가기
반응형

멀티 모듈 구성 시 보통 common 모듈을 두고 나머지 모듈 (e.g. API 모듈, Batch 모듈, ..) 에서 common 모듈을 참조하도록 구성한다.

 

common 모듈에 작성한 공통 로직 + 의존성을 타모듈들에서 중복없이 사용하기 위함이다.

 

이 때 common 모듈에 dependency를 `implementation`으로 잡을 경우 common을 참조하는 타 모듈에선 common의 코드들만 노출되고 common의 dependency들은 노출되지 않는다. 

예를 들어 common 모듈에 JPA Starter 의존성을 implementation으로 잡으면 api, batch 모듈에선 JPA 관련 코드가 노출이 안되는 것이고 JPARepository 등을 상속받아 구현된 Repository들에 findAll, save 등 메소드를 사용할 수 없다는 뜻이다.

 

이를 해결하기 위해 의존성을 `api`로 잡으면 이 부분이 해결된다. (Gradle 6 이하에선 compile, 7 이상에선 api)

반응형