티스토리 뷰
[Spring] Gradle - runtimeOnly, compileOnly, implementation의 차이
on1ystar 2023. 3. 20. 20:01Goals
- compileClasspath vs runtimeClasspath
- compileOnly vs runtimeOnly vs implementation
compileClasspath vs runtimeClasspath
compileClasspath와 runtimeClasspath는 Gradle에서 프로젝트의 의존성 관리를 위해 사용되는 두 가지 중요한 속성입니다.
compileClasspath
프로젝트 소스 코드를 컴파일하는 동안 필요한 모든 클래스 파일과 라이브러리를 포함합니다.
컴파일 시간에만 필요한 의존성이 포함되며, 런타임에는 필요하지 않습니다. 이러한 의존성은 빌드 결과물에 포함되지 않습니다.
runtimeClasspath
프로젝트를 실행할 때 필요한 모든 클래스 파일과 라이브러리를 포함합니다.
로젝트가 실행될 때 필요한 모든 의존성이 포함되며, 이러한 의존성은 빌드 결과물에 포함됩니다.
일반적으로, compileClasspath에는 runtimeClasspath에 포함되는 대부분의 의존성이 포함되어 있습니다.
compileOnly vs runtimeOnly vs implementation
Gradle에서 runtimeOnly, compileOnly, implementation은 모두 의존성을 관리하기 위해 사용되는 옵션입니다.
runtimeOnly
라이브러리가 런타임에만 필요하다는 것을 나타냅니다. 이 옵션을 사용하면 프로젝트 빌드 시점에 해당 라이브러리를 클래스 패스에 추가하지 않고, 런타임에 필요한 경우에만 라이브러리를 프로젝트에 포함합니다.
런타임 시에 라이브러리가 필요한 경우, runtimeOnly로 설정된 라이브러리를 프로젝트에 추가해주어야 합니다.
예를 들어, 스프링 부트 프로젝트에서 JDBC 드라이버를 runtimeOnly로 설정하여, 빌드 시점에는 포함하지 않고, 런타임에 필요한 경우에만 드라이버를 프로젝트에 포함시킬 수 있습니다.
dependencies {
runtimeOnly 'mysql:mysql-connector-java:8.0.27'
}
compileOnly
라이브러리가 컴파일 시점에만 필요하다는 것을 나타냅니다. 이 옵션을 사용하면 프로젝트 빌드 시점에 해당 라이브러리를 컴파일에 사용하고, 빌드된 결과물에는 포함하지 않습니다. 즉, 컴파일 시점에만 라이브러리를 참조할 수 있습니다.
예를 들어, 프로젝트에서 테스트 코드를 작성할 때, junit 라이브러리를 compileOnly로 설정하여, 테스트 코드 컴파일 시에만 해당 라이브러리를 참조하도록 할 수 있습니다.
dependencies {
compileOnly 'junit:junit:4.13.2'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
implementation
라이브러리가 컴파일 및 런타임 모두 필요하다는 것을 나타냅니다. 이 옵션을 사용하면 프로젝트 빌드 시점에 해당 라이브러리를 컴파일에 사용하고, 빌드된 결과물에도 포함됩니다. 라이브러리와 관련된 클래스 및 메서드를 프로젝트에서 직접 참조할 수 있습니다.
예를 들어, 스프링 부트 프로젝트에서 스프링 프레임워크를 사용할 때, implementation으로 설정하여 컴파일 시에 해당 라이브러리를 참조하고, 빌드된 결과물에도 포함시킬 수 있습니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web:2.6.3'
}
이들 옵션을 적절히 사용하여 프로젝트의 빌드 속도와 크기를 최적화할 수 있습니다.
Reference
'Spring&Spring Boot' 카테고리의 다른 글
[Spring] application.properties에 대해 (0) | 2023.04.18 |
---|---|
[Spring] DTO를 사용하는 이유 (0) | 2023.03.23 |
[Spring Boot] Spring Data JPA 페이징/정렬 처리 (0) | 2023.03.09 |
[Spring Boot] 입문 - Spring Data JPA 맛보기 (0) | 2023.02.25 |
[Spring Boot] 입문 - Spring Boot 프로젝트에 JPA 적용하기 (0) | 2023.02.24 |
- Total
- Today
- Yesterday
- 스프링
- spring mvc
- Gradle
- 패킷 스위칭
- Python Cookbook
- 운영체제 반효경
- 쉽게 배우는 운영체제
- 김영환
- 생활코딩 javascript
- Computer_Networking_A_Top-Down_Approach
- 파이썬 for Beginner 솔루션
- 프로그래머스
- Thymeleaf
- git branch
- JPA
- 파이썬 for Beginner 연습문제
- Spring Data JPA
- 선형 회귀
- git merge
- 쉘 코드
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 지옥에서 온 git
- Spring Boot
- 스프링 컨테이너
- git
- 스프링 테스트
- 스프링 mvc
- jsp
- 방명록 프로젝트
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |