gradle implementation vs api 차이

2025. 10. 19. 22:37·Tech/Gradle

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
'Tech/Gradle' 카테고리의 다른 글
  • bootJar,jar 활성,비활성화 (구)/(신) 코드
  • git submodule 추가후 빌드시 resources 폴더에 yml 추가
  • SpirngBoot 기준 Gradle 멀티 모듈 세팅
소프
소프
  • 소프
    기회는 찬스
    소프
  • 전체
    오늘
    어제
    • 분류 전체보기 (138) N
      • Language (20)
        • Java (19)
        • Design Pattern (1)
      • Tech (27)
        • Spring (19)
        • JPA (3)
        • QueryDSL (1)
        • Gradle (4)
      • 개발 생각 (1)
      • IT Book (0)
        • 자바_스프링 개발자를 위한 실용주의 프로그래밍 (0)
      • Database (4)
        • Mysql (4)
        • Redis (0)
      • 네트워크 (1)
      • 운영체제 (2)
      • IDE (12)
        • Intellij (9)
        • vscode (2)
        • datagrip (1)
      • 인프라 (11)
        • Docker (2)
        • Jenkins (7)
        • Github Actions (1)
        • GCP (1)
      • 형상관리 (2)
        • gitlab (2)
        • git (0)
      • 외부활동 (44)
        • CS 면접 끝장내기 - 데이터베이스 1기 (5)
        • CS 면접 끝장내기 - 컴퓨터 네트워크 2기 (5)
        • CS 면접 끝장내기 - 자바 2기 (0)
        • TDD, 클린 코드 with Java 17기 (7)
        • ATDD, 클린 코드 with Spring 8기 (6)
        • 루퍼스 2기 (21)
      • 프로젝트 (0)
      • 회고 (6)
      • 기타 (1)
        • 제미니의 개발 실무 (0)
  • 블로그 메뉴

    • 홈
    • Github
    • LinkedIn
    • 방명록
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.6
소프
gradle implementation vs api 차이
상단으로

티스토리툴바