[Spring] Gradle 의존성 관리 옵션 정리

곽태민·2024년 8월 27일
0

Spring

목록 보기
1/2

Spring Boot 프로젝트에서 Gradle을 사용해서 의존성을 관리할 때, 다양한 의존성 설정 옵션을 통해 특정 상황에 맞게 라이브러리를 관리할 수 있다.
이 글에서는 Gradle의 주요 의존성 관리 옵션인 implementation, compileOnly, annotationProcessor에 대해 알아보려고 한다.

1. implementation

implementation은 프로젝트가 컴파일 및 런타임에 필요한 의존성을 지정할 때 사용된다. 이 의존성 옵션은 프로젝트의 classpath 포함되어 있으며, 다른 모듈에서 이 의존성을 바라보지 못하게 막아준다. 즉, 의존성의 세부사항이 다른 모듈에 노출되지 않아, 모듈 간의 의존성 관리를 더 깔끔하게 할 수 있다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

특징은 아래와 같다.

  • 프로젝트에서 직접 사용하는 모든 의존성을 여기에 포함시킨다.
  • compile 키워드의 대체로, Gradle 3.4 이후부터 사용을 권장한다.
  • 런타임 시에도 필요한 라이브러리와 함께 제공되어, 어플리케이션 실행에 필수적인 라이브러리를 지정한다.

2. compileOnly

compileOnly컴파일 시에만 필요한 의존성을 지정한다. 즉, 어플리케이션이 실행될 때, 이 의존성 옵션이 classpath에 포함되지 않는다. 주로 컴파일 타임에만 필요한 라이브러리를 정의할 때 사용한다.

dependencies {
	compileOnly 'org.projectlombok:lombok'
}

특징은

  • 런타임에는 불필요한 라이브러리를 포함하지 않는다. 예를 들어, Lombok과 같은 컴파일 전용 도구는 런타임에 필요하지 않으므로 compileOnly로 설정한다.
  • 이 의존성은 애플리케이션이 실행될 때는 필요하지 않지만, 컴파일 시에는 필요한 라이브러리들을 지정한다.

3. annotationProcessor

annotationProcessor는 컴파일 타임에 어노테이션 프로세서가 사용하는 의존성을 정의한다. 어노테이션 프로세서는 소스 코드를 분석하고 추가적인 코드를 생성하는 역할을 한다. 주로 코드 생성기나 빌드 도구에서 사용된다.

dependencies {
	annotationProcessor 'org.projectlombok:lombok'
}

특징은

  • 컴파일 타임에만 필요한 의존성을 정의하며, 런타임 시에는 필요하지 않다.
  • Lombok과 같은 어노테이션 프로세서는 코드 생성 시 필요하고, 어플리케이션이 실행될 때는 필요하지 않으므로 이 옵션을 사용한다.
  • annotationProcessor로 지정된 의존성은 컴파일 과정에서만 활성화된다.

마무리

Gradleimplementation, complieOnly, annotationProcessor는 각각 특정한 목적에 맞춰 의존성을 관리할 수 있도록 도와준다.
implementation은 런타임과 컴파일 타임에 모두 필요한 의존성을 관리하고, complieOnly는 컴파일 시에만 필요한 의존성을 정의하며, annotationProcessor는 이와 관련된 의존성을 관리한다.

이러한 설정을 통하여 효율적으로 프로젝트 의존성을 관리하고, 불필요한 라이브러리의 포함을 방지할 수 있다.

profile
Node.js 백엔드 개발자입니다!

0개의 댓글