implementation
의존성을 내부적으로만 사용
다른 모듈에 전이되지 않음
// Module A
dependencies {
implementation 'com.google.gson:gson:2.8.9'
}
// Module B가 Module A를 의존할 때
dependencies {
implementation project(':moduleA')
// Module B는 Gson을 직접 사용할 수 없음
// Gson이 필요하면 명시적으로 추가해야 함
}
api
의존성을 외부에 노출
다른 모듈에 전이됨
// Module A
dependencies {
api 'com.google.gson:gson:2.8.9'
}
// Module B가 Module A를 의존할 때
dependencies {
implementation project(':moduleA')
// Module B는 Gson을 자동으로 사용 가능
}
// domain 모듈
dependencies {
api 'org.springframework.boot:spring-boot-starter-data-jpa'
// JPA 엔티티를 다른 모듈에서도 사용하므로 api
implementation 'com.fasterxml.jackson.core:jackson-databind'
// JSON 변환은 내부에서만 사용하므로 implementation
}
언제 뭘 써야 할까?
implementation 사용
내부 구현에만 사용되는 라이브러리
빌드 속도 향상 (변경 시 재컴파일 범위 축소)
api 사용
public 메서드의 반환 타입이나 파라미터로 노출되는 경우
인터페이스나 추상 클래스를 다른 모듈과 공유할 때
'Tech > Gradle' 카테고리의 다른 글
| bootJar,jar 활성,비활성화 (구)/(신) 코드 (0) | 2025.10.16 |
|---|---|
| git submodule 추가후 빌드시 resources 폴더에 yml 추가 (0) | 2021.12.18 |
| SpirngBoot 기준 Gradle 멀티 모듈 세팅 (0) | 2021.12.17 |