Gradle이란?
●Gradle이란?
●빌드 자동화 도구를 왜 사용할까?
●Maven과 Gradle의 차이점을 설명

●Dependency Configuration이 무엇이고 어떤 종류가 있을까
Dependency Configuration은 애플리케이션에 필요한 의존성의 사용 범위를 정의하는 설정이며, 사용 범위를 명확히 구분하는 이유는 빌드 성능 개선과 불필요한 의존성을 제거해서 빌드 결과물의 크기를 최적화하기 위함
implementation은 컴파일 및 런타임 시점에 모두 필요한 의존성이며, 해당 의존성이 현재 모듈에서만 필요할 때 사용하고, 일반적인 라이브러리나 프레임워크를 추가할 때 주로 사용
api는 implementation과 비슷하지만, 다른 모듈에서도 접근할 수 있는 의존성을 정의할 때 사용하며, 예를 들어, a -> b -> c의 의존성이 있을 때, a에서 c를 사용하려면 b에서 c를 api로 추가해야 함
compileOnly는 컴파일 시점에만 필요한 의존성으로, Lombok과 같은 라이브러리에서 사용
annotationProcessor는 컴파일 시점에 실행되는 어노테이션 프로세서를 추가할 때 사용하며 예를 들어, MapStruct와 Lombok과 같이 컴파일 시점에 어노테이션을 기반으로 특정 프로세스를 수행하는 라이브러리에서 사용
runtimeOnly는 런타임 시점에만 필요한 의존성이며 예를 들어, 데이터베이스 드라이버는 컴파일 시점에 필요하지 않지만, 애플리케이션이 실행될 때만 필요하므로 runtimeOnly로 설정
testImplementation, testCompileOnly, testRuntimeOnly와 같이 'test'가 포함된 설정은 테스트 코드에서만 사용되는 의존성을 추가할 때 사용