Gradle Compile과 Implementation 차이점

Hyebin Lee·2022년 5월 28일
0

API (Compile)

연결된 API가 모두 프로젝트에 의해 노출이 된다.
특정 모듈을 수정하면 해당 모듈에 의존하는 모듈들이 전부 수정된다 (시간이 오래걸린다)

Implementation

특정 모듈을 수정하면 해당 모듈과 직접적인 의존을 하는 모듈만 rebuild된다 (빠르다)
API 노출을 최소화한다 (Facade 패턴)

의존성 옵션들

implementation

의존 라이브러리 수정 시 본 모듈까지만 재빌드한다
본 모듈을 의존하는 모듈은 해당 라이브러리의 api를 사용할 수 없다 (api 노출 없음)

api

의존 라이브러리 수정시 본 모듈을 의존하는 모듈들도 재빌드된다
본 모듈을의존하는 모듈들도 해당 라이브러리의 api를 사용할 수 있다 (api 노출 있음)

compileOnly

compile 시에만 빌드하고 빌드 결과물에는 포함하지 않는다
runtime시 필요하지 않은 라이브러리에 경우 사용한다

runtimeOnly

런타임시에만 필요한 라이브러리인 경우 사용한다

annotationProcessor

어노테이션 프로세서 명시 (lombok)

testImplementation

테스트 코드 수행할 때만 적용

0개의 댓글