회사에서 업무를 진행하던 중 sql-jdbc
를 찾을 수 없다는 오류가 발생하며 프로젝트가 실행되지 않았습니다.
build.gradle에서 runtimeOnly -> implementation으로 변경 후 재실행하니까 정상적으로 실행의 성공하였습니다.
implementation, compileOnly, runtimeOnly 를 사용중인데 있어 어떤 차이가 있는지 찾아보았습니다.
implementation
implementation
은 가장 일반적으로 사용되는 종속성 구성 중 하나입니다. 이 구성을 사용하면 해당 종속성은 컴파일 타임과 런타임 모두에서 필요한 경우 사용됩니다. 즉, 이 종속성이 프로젝트 코드 내의 클래스나 메소드를 컴파일하는 동안 사용되며, 해당 종속성이 실행되는 동안 런타임 클래스패스에 포함됩니다. 이 종속성이 다른 모듈이나 프로젝트에 영향을 주고 전달되어야 할 때 주로 implementation을 사용합니다.
compileOnly
compileOnly
는 종속성을 컴파일 타임에만 필요로 하는 경우 사용됩니다. 이 종속성은 프로젝트 코드를 컴파일할 때만 필요하며, 런타임에는 해당 종속성이 필요하지 않습니다. 대표적으로 인터페이스나 추상 클래스의 경우에 해당합니다. 컴파일 타임에는 해당 클래스의 선언을 참조해야 하지만, 실제로 실행될 때에는 해당 클래스의 구현이 다른 모듈 또는 라이브러리에서 제공될 것이기 때문에 런타임에서는 필요하지 않습니다.
runtimeOnly
runtimeOnly
는 런타임에서만 필요한 종속성을 지정할 때 사용됩니다. 이 종속성은 프로젝트 코드를 컴파일하는 동안에는 필요하지 않으며, 실제 실행 시에만 해당 종속성이 필요합니다. 런타임에 클래스패스에 해당 종속성을 추가하여 프로그램이 실행될 때 사용됩니다. 대표적으로는 실행 중에 동적으로 로드되는 플러그인, 라이브러리 또는 외부 리소스의 종속성을 runtimeOnly로 설정할 수 있습니다.
'ETC' 카테고리의 다른 글
vault approle 활용하여 정보 가져오기 (0) | 2024.03.27 |
---|---|
vault 생성 및 정보 저장 및 읽기 (2) | 2024.03.27 |
NUXT Error: Cannot find module 'node:fs' (3) | 2023.05.09 |
Decoupled Architecture - 백엔드와 프론트엔드의 분리 (0) | 2023.04.11 |
WEB SOCKET (0) | 2022.11.23 |