인프런 커뮤니티 질문&답변

zeroone님의 프로필 이미지
zeroone

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

build.gradle에서 runtimeOnly 단어

작성

·

4.9K

0

build.gradle파일에서 h2데이터 베이스 관련 라이브러리 추가하실때 아래와 같은 코드를 사용했습니다.

maven repository에 들어가면 testCompile쓰던데 runtimeOnly로 쓰셨던것은 어떤 이유인가요?

dependencies{
    runtimeOnly 'com.h2database:h2'
}

답변 3

5

김영한님의 프로필 이미지
김영한
지식공유자

네 원일님

예를들어서 compileOnly는 컴파일 시점에 꼭 필요한 라이브러리 입니다. 대신에 컴파일 이후에 실제 실행할 때는 해당 라이브러리가 없어도 됩니다. 반면에 runtimeOnly는 컴파일 시점에는 필요없지만 실행 시점에는 꼭 필요한 라이브러리 입니다.

이게 어떻게 사용되면 예를들어서 runtimeOnly 라이브러리는 호환 가능한 라이브러리가 있으면 컴파일 이후에는 다른 호환 가능한 라이브러리로 교체하는 것이 가능합니다.(컴파일 하지 않고 라이브러리만 교체)

적어주신 h2 라이브러리는 컴파일 시점에는 전혀 필요하지 않고, 실행 시점에만 필요합니다. 그래서 빌드된 최종 결과 라이브러리에 포함됩니다.

이 부분을 언제 어떻게 사용해야 하는지는 사실 각 라이브러리마다 다르기 때문에, 해당 라이브러리가 어떤 방식을 제공하는지를 따로따로 이해해야 합니다.

감사합니다.

0

zeroone님의 프로필 이미지
zeroone
질문자

언제 CompileOnly나 runtimeOnly를 써야할지가 궁금합니다. 위 예시에서도 h2외에도 많은 라이브러리가 있는데 각각에 대해 어떤것이 runtime에만 필요하고 어떤것이 compile time에만 필요한것인지 아는 방법을 잘 모르겠습니다. 

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 원일님

이게 각각 의미가 있는데요. 

CompileOnly는 컴파일 시점에만 사용되고,

runtimeOnly는 컴파일 시점에는 사용되지 않고, 실행 시점에 사용됩니다.

감사합니다.

zeroone님의 프로필 이미지
zeroone

작성한 질문수

질문하기