..
Troubleshooting: Maven Shade Plugin과 Fat JAR
1. 문제 상황
성공적으로 빌드한 라이브러리(.jar)를 배포했으나, 이를 사용하는 쪽에서 클래스를 찾지 못하는(NoClassDefFoundError) 현상이 발생했습니다.
2. 원인 분석
우리가 만든 라이브러리가 의존하고 있는 외부 라이브러리들이 배포용 빌드본(.jar)에 포함되지 않은 불완전한 패킹이 원인이었습니다.
- 원인: 일반적인 Maven 빌드는 내가 짠 코드만 패키징합니다.
- 결과: 실행 시점에 의존성 라이브러리가 클래스패스에 없어 오류가 발생합니다.
3. 해결책: Maven Shade Plugin
이 플러그인은 프로젝트의 모든 의존성 라이브러리를 하나의 커다란 JAR 파일로 합쳐주는 역할을 합니다. 이를 흔히 Fat JAR 또는 Uber JAR라고 부릅니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>shade</goal></goals>
</execution>
</executions>
</plugin>
라이브러리나 실행 파일을 단독으로 배포해야 하는 상황이라면, 의존성 지옥을 피하기 위해 Shade Plugin 설정을 고려해 보아야 합니다.