연결된 API가 모두 프로젝트에 의해 노출이 된다.
특정 모듈을 수정하면 해당 모듈에 의존하는 모듈들이 전부 수정된다 (시간이 오래걸린다)
특정 모듈을 수정하면 해당 모듈과 직접적인 의존을 하는 모듈만 rebuild된다 (빠르다)
API 노출을 최소화한다 (Facade 패턴)
의존 라이브러리 수정 시 본 모듈까지만 재빌드한다
본 모듈을 의존하는 모듈은 해당 라이브러리의 api를 사용할 수 없다 (api 노출 없음)
의존 라이브러리 수정시 본 모듈을 의존하는 모듈들도 재빌드된다
본 모듈을의존하는 모듈들도 해당 라이브러리의 api를 사용할 수 있다 (api 노출 있음)
compile 시에만 빌드하고 빌드 결과물에는 포함하지 않는다
runtime시 필요하지 않은 라이브러리에 경우 사용한다
런타임시에만 필요한 라이브러리인 경우 사용한다
어노테이션 프로세서 명시 (lombok)
테스트 코드 수행할 때만 적용