모든 의존성에 있는 라이브러리가 자체 포함되어 있는 JAR 파일을 뜻한다. Fat JAR는 java -jar 명령어로 단독 실행할 수 있다.
Spring boot 프로젝트가 아닌 java 파일로 만들고 gRPC로 통신하는 프로젝트를 하다 build하고 Docker Hub에 올릴려고 했는데, build하고 실행해보니
이러한 오류가 떴다.
jar 파일의 용량과 에러메시지를 보고 라이브러리를 포함하지 못하고 있다고 생각하여 fat-jar를 만드는 방법에 대해 찾아보고 해결하였다.
jar {
...
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
...
}
spring boot에서 build 파일을 만들어 줬을때 fat-jar 파일로 생성해주었기 때문에 gradle의 기본값이 fat-jar라고 생각하고 있었다. spring boot가 어떤 편의를 제공하는지도 잘 모르고 gradle에 대해서도 잘 몰라서 사소한 문제로 삽질을 많이한것 같다 ㅠ