본문 바로가기

카테고리 없음

📌 TIL - 프로젝트 세팅: Gradle 의존성 이해

💡 의존성이란?

의존성은 프로젝트가 외부 라이브러리나 모듈에 의존하고 있는 관계를 의미합니다. 주로 build.gradle 파일의 dependencies 블록을 통해 설정합니다.

1. Compile 시점 의존성

  • 컴파일 단계에서 필요한 라이브러리입니다.
  • 코드 작성 시 해당 라이브러리의 API를 사용할 수 있습니다.

2. Runtime 시점 의존성

  • 실행 단계에서만 필요한 라이브러리입니다.
  • 컴파일에는 영향을 주지 않지만, 프로그램이 실행될 때 반드시 존재해야 합니다.

3. 은닉성 (Encapsulation)

  • implementation으로 추가한 의존성은 외부 모듈에 노출되지 않습니다.
  • 이를 통해 모듈 간 결합도를 낮추고 캡슐화를 강화할 수 있습니다.

💡 주요 의존성 옵션 (in build.gradle)

옵션설명사용 예
implementation 컴파일과 런타임 모두 필요하지만, 외부에 노출되지 않는 의존성 대부분의 내부 라이브러리
api implementation과 유사하지만, 다른 모듈에도 전파됨 (외부에 공개됨) 공통 유틸리티 모듈
runtimeOnly 런타임에만 필요하고 컴파일 시점엔 필요 없는 의존성 JDBC 드라이버, SLF4J 구현체
compileOnly 컴파일 시점에만 필요, 런타임엔 불필요 애노테이션 프로세서
testImplementation 테스트 코드 작성 및 실행 시에만 필요 JUnit, Mockito 등

 

✨ 추가 팁

팁 1: implementation을 기본값으로 사용하세요. api는 정말 필요한 경우에만 사용합니다 (라이브러리 설계 시).
팁 2: 의존성 충돌이 발생할 수 있으니 dependencyInsight, dependencies 태스크로 분석해보세요.
팁 3: runtimeOnly을 사용할 땐 해당 라이브러리가 누락되면 NoClassDefFoundError가 발생할 수 있으니 주의하세요.

 

✨ 참고하면 좋은 사이트(개념, 비교,검색)