본문 바로가기
Spring

Gradle 라이브러리 의존성 설정

by 꽃도련 2022. 5. 24.

아래 그래프는 Gradle에서 라이브러리 구성을 설정하는 방법을 설명한다.

 

  • 녹색 : 라이브러리의 의존성을 선언할 때 사용하는 설정
  • 분홍색 : 라이브러리를 컴파일하거나 실행할 때 사용하는 설정
  • 파란색 : 라이브러리 자체에서 사용하는 설정

   

Configuration name Description  
api 컴파일 및 런타임 시 필요한 의존성 선언(사용자에게 의존성 노출)
implementation 컴파일 및 런타임 시 필요한 의존성 선언(런타임 시에만 사용자에게 의존성 노출)
compileOnly 컴파일 시에만 필요한 의존성 선언
compileOnlyApi 사용자의 모듈을 컴파일 할때 필요한 의존성 선언
runtimeOnly 런타임 시에만 필요한 의존성 선언
apiElements 해당 라이브러리를 컴파일하는 데 필요한 모든 요소를 검색할 때 사용
(default 설정과 다르게, implemenation이나 runtime 의존성에 대한 정보를 노출하지 않음)
runtimeElements 해당 라이브러리를 실행하는 데 필요한 모든 요소를 검색할 때 사용
compileClasspath 라이브러리의 컴파일 클래스 경로를 지정(자바 컴파일러를 호출할 때 사용)
runtimeClasspath 라이브러리의 런타임 클래스 경로 지정

 

api vs impelmentation

  • api: 의존 라이브러리 수정시 해당 모듈을 의존하고 있는 모듈들 또한 재빌드
    • A(api) <- B <- C 일 때, C 에서 A 를 접근할 수 있음
    • A 수정시 B 와 C 모두 재빌드
  • implementaion: 의존 라이브러리 수정시 본 모듈까지만 재빌드
    • A(implementation) <- B <- C 일 때, C 에서 A 를 접근할 수 없음
    • A 수정시 B 까지만 재빌드

 

 

참고자료

- https://docs.gradle.org/current/userguide/java_library_plugin.html

 

The Java Library Plugin

The Java Library plugin expands the capabilities of the Java plugin by providing specific knowledge about Java libraries. In particular, a Java library exposes an API to consumers (i.e., other projects using the Java or the Java Library plugin). All the so

docs.gradle.org

- https://twinparadox.tistory.com/630

 

Gradle의 라이브러리 의존성 옵션 정리

익숙함 문득 웹 프로젝트 관련 내용들을 정리해나가면서, gradle 파일을 보니까 다음과 같은 부분이 눈에 들어왔다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' imp..

twinparadox.tistory.com

- https://jongmin92.github.io/2019/05/09/Gradle/gradle-api-vs-implementation/

 

(Gradle dependency) api와 implementation 차이

build script의 dependencies 블록에 여러 가지 다양한 종속성 구성(api, implementation, compileOnly, runtimeOnly, annotationProcessor)을 사용하여 라이브러리 종속성을 선언할 수 있습니다. 다양한 종속성 구성 중 api

jongmin92.github.io

 

'Spring' 카테고리의 다른 글

Gradle vs Maven  (0) 2022.05.11
Spring Boot 자동 환경설정 Annotation  (0) 2022.05.11