코딩항해기

[Spring] Gradle Dependency Configuration 본문

Spring

[Spring] Gradle Dependency Configuration

miniBcake 2025. 6. 5. 15:00

 

주요 Gradle Dependency Configuration 종류, 예시, 설명

종류 예시 설명
implementation implementation 'org.springframework:spring-core:5.3.31' 컴파일/런타임 모두 필요. 외부에 노출되지 않음(모듈 캡슐화). 가장 일반적으로 사용.
api api 'com.google.guava:guava:33.2.0-jre' 컴파일/런타임 모두 필요. 이 모듈을 사용하는 다른 모듈에도 의존성이 전파됨.
compileOnly compileOnly 'javax.servlet:servlet-api:2.5' 컴파일 시에만 필요. 런타임에는 포함되지 않음. 예: 서블릿 API
runtimeOnly runtimeOnly 'mysql:mysql-connector-java:8.0.33' 런타임에만 필요. 컴파일에는 필요 없음. 예: DB 드라이버
testImplementation testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' 테스트 코드에서만 필요. 실제 배포에는 포함되지 않음.
testCompileOnly testCompileOnly 'org.projectlombok:lombok:1.18.32' 테스트 코드 컴파일 시에만 필요. 테스트 실행에는 포함되지 않음.
testRuntimeOnly testRuntimeOnly 'org.hsqldb:hsqldb:2.7.2' 테스트 실행(런타임)에서만 필요. 예: 테스트 DB
annotationProcessor annotationProcessor 'org.projectlombok:lombok:1.18.32' 컴파일 시 어노테이션 기반 코드 생성용. 예: Lombok
developmentOnly developmentOnly 'org.springframework.boot:spring-boot-devtools:3.3.0' 개발 환경에서만 필요. 배포에는 포함되지 않음. 예: 핫리로드 도구
providedRuntime providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' WAR 배포 시 서버가 제공하므로 빌드 결과물에는 포함하지 않음.
fileTree implementation fileTree(dir: 'libs', include: ['*.jar']) 특정 폴더의 모든 JAR 파일을 의존성에 추가. 로컬 라이브러리 사용 시
project implementation project(':common') 같은 멀티 프로젝트 내 다른 모듈을 의존성에 추가

 

dependencies {
    // 컴파일과 런타임 모두 필요한 일반적인 의존성
    implementation 'org.springframework.boot:spring-boot-starter-web'

    // 다른 모듈에서도 이 의존성을 사용할 수 있게 노출 (라이브러리 개발 시 주로 사용)
    api 'com.google.guava:guava:33.2.0-jre'

    // 컴파일 시에만 필요, 실행 파일에는 포함되지 않음 (예: Lombok)
    compileOnly 'org.projectlombok:lombok:1.18.32'

    // 컴파일 시 어노테이션 프로세서로 사용 (예: Lombok)
    annotationProcessor 'org.projectlombok:lombok:1.18.32'

    // 런타임에만 필요, 컴파일 시에는 필요 없음 (예: DB 드라이버)
    runtimeOnly 'mysql:mysql-connector-java:8.0.33'

    // 개발 환경에서만 필요, 배포에는 포함되지 않음 (예: DevTools)
    developmentOnly 'org.springframework.boot:spring-boot-devtools'

    // WAR 배포 시 톰캣 등 서버가 제공하므로 빌드 결과물에는 포함하지 않음
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

    // 특정 폴더의 모든 JAR 파일을 의존성에 추가 (예: libs 폴더)
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // 멀티 프로젝트에서 다른 모듈을 의존성에 추가
    implementation project(':common')

    // 테스트 코드에서만 필요
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // 테스트 코드 컴파일 시에만 필요
    testCompileOnly 'org.projectlombok:lombok:1.18.32'

    // 테스트 실행(런타임)에서만 필요 (예: 테스트용 DB)
    testRuntimeOnly 'com.h2database:h2'
}