Gradle 6

[Gradle] Gradle 라이브러리 참조 문제 정리

Gradle에서 자주 발생하는 라이브러리 참조 문제를 정리합니다.라이브러리 프로젝트(예: A)에서 다른 라이브러리(B, C 등)를 의존성으로 추가하고 이를 Maven에 배포했을 때,해당 라이브러리를 참조하는 외부 프로젝트(예: X)에서 의존성이 전파되지 않아 클래스가 보이지 않는 문제가 생길 수 있습니다.이러한 문제를 직면하고, 해결한 내용을 정리하였습니다.api vs implementation 차이점Gradle의 dependencies 블록에서 자주 사용하는 두 선언 방식의 차이:선언 방식 외부 프로젝트에서 접근 가능 여부 전이성apiO (전파됨)전이됨implementationX (내부에서만 사용 가능)전이되지 않음implementation: 현재 모듈 내부에서만 사용하는 라이브러리. 다른 프로젝트에서..

ETC 2025.03.28

[Gradle] Gradle 캐시와 사용자 홈(GRADLE_USER_HOME)

Gradle을 사용하다 보면, 거의 모든 복잡한 지시서 다국적인 사용성을 위해 캐시 구조를 재정리합니다.하지만 또한 유연하게 발생할 수 있는 문제가, “같은 버전의 라이브러리를 다시 배포했을 때 변경사항이 반영되지 않는다”는 것입니다.Gradle 캐시를 지워야 하는 이유라이브러리를 같은 버전으로 다시 배포하거나 수정했을 경우, Gradle은 기존에 남아있는 캐시를 계속 사용Maven 저장소에서 삭제한 라이브러리를 IntelliJ 또는 Gradle에서 계속 찾을 수 있음잘못된 라이브러리 .jar 파일 때문에 예기치 못한 오류 발생Gradle 캐시가 저장되는 위치~/.gradle/caches/modules-2/files-2.1/구조 설명:~/.gradle/ └ caches/ └ modules-2/..

ETC 2025.03.27

[SLF4J] LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation() 에러 해결

프로젝트 구조Java 21gradleSpring boot 3.XSpring Webfluxkotlin에러 발생- java, spring boot, gradle 등 프로젝트 주요 라이브러리의 버전업 후, 프로젝트 boot시에 에러가 발생하는 것을 발견Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.helpers.NOPLoggerFactory loaded from file:/Users..

개발 Error 2025.03.20

[SLF4J] Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier. 에러 해결

프로젝트 구조Java 21gradleSpring boot 3.XSpring Webfluxkotlin에러 발생java, spring boot, gradle 등 프로젝트 주요 라이브러리의 버전업 후, 프로젝트 boot시에 에러가 발생하는 것을 발견SLF4J(W): No SLF4J providers were found.SLF4J(W): Defaulting to no-operation (NOP) logger implementationSLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.SLF4J(W): Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x..

개발 Error 2025.03.20

Gradle과 Maven Publish 플러그인

소프트웨어 개발에서 프로젝트 관리와 배포는 중요한 과정입니다.특히, 대규모 프로젝트에서는 빌드와 배포를 자동화하는 도구가 필수적입니다.여기에서는 Gradle의 기본 개념과 함께 Maven Publish 플러그인을 활용한 배포 과정을 살펴보겠습니다.Gradle이란?Gradle은 빌드 자동화 도구로, 소스 코드 컴파일, 테스트 실행, 배포 등의 작업을 효율적으로 관리합니다.작업을 유향 비순환 그래프(DAG)로 모델링하여 작업 간 의존성을 효율적으로 관리하며, 다양한 유형의 소프트웨어 프로젝트를 지원하는 유연성을 제공합니다.Ant와 Maven의 장점을 결합하여 탄생한 도구로, 다양한 언어와 플랫폼에서 사용할 수 있습니다.주요 역할프로젝트 관리:의존성(dependencies) 추가 및 관리.멀티 프로젝트 구성 ..

ETC 2025.01.17

종속성 구성(implementation, compileOnly, runtimeOnly)

회사에서 업무를 진행하던 중 sql-jdbc를 찾을 수 없다는 오류가 발생하며 프로젝트가 실행되지 않았습니다. build.gradle에서 runtimeOnly -> implementation으로 변경 후 재실행하니까 정상적으로 실행의 성공하였습니다. implementation, compileOnly, runtimeOnly 를 사용중인데 있어 어떤 차이가 있는지 찾아보았습니다. implementation implementation은 가장 일반적으로 사용되는 종속성 구성 중 하나입니다. 이 구성을 사용하면 해당 종속성은 컴파일 타임과 런타임 모두에서 필요한 경우 사용됩니다. 즉, 이 종속성이 프로젝트 코드 내의 클래스나 메소드를 컴파일하는 동안 사용되며, 해당 종속성이 실행되는 동안 런타임 클래스패스에 포함..

ETC 2023.08.16