๐คGradle Shadow Plugin์ ์ฌ์ฉํ๊ฒ ๋ ์ด์
์ปดํ์ผ ํ ์คํ์ ํ๋ ์ค, java.lang.NoClassDefFoundError
๋ฅผ ๋ง์ฃผํ๊ฒ ๋์๋ค.
ํด๋น ์๋ฌ๋ ํด๋์ค๋ฅผ ์ฐพ์ง ๋ชปํด์ ๋ฐ์ํ๋ค.
๋์ ๊ฒฝ์ฐ, build.gradle์ ์ถ๊ฐํ dependency์ ๊ด๋ จํ ํด๋์ค๋ฅผ ์ฐพ์ง ๋ชปํด ์๊ฒจ๋ ๋ฌธ์ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Gradle Shadow Plugin์ ์ฌ์ฉํด์ผ ํ๋ค.
๐Gradle Shadow Plugin์ด๋?
์ด ํ๋ฌ๊ทธ์ธ์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข
์์ฑ์ ํฌํจํ fat jar
๋ฅผ ์์ฑํ๋ค.
fat jar
๋ ์คํ ๊ฐ๋ฅํ JAR ํ์ผ๋ก, ๋ชจ๋ ์ข
์์ฑ์ ํฌํจํ๊ณ ์์ผ๋ฏ๋ก ๋ ์ด์ ์ข
์์ฑ ํ์ผ์ ๋ณ๋๋ก ๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ค์นํ ํ์๊ฐ ์๋ค.
๐ชGradle Shadow Plugin ์ฌ์ฉ๋ฒ
1. build.gradle
ํ์ผ์์ ๋ค์์ ์ถ๊ฐํ๋ค.
plugins {
id 'com.github.johnrengelman.shadow' version '8.1.0'
id 'java'
}
โ ๏ธ ์์ ์ ํ๊ฒฝ์ ๋ง๋ ๋ฒ์ ์ ์ ์ด์ค์ผํ๋ค.
Gradle ๋ฒ์ | Shadow ๋ฒ์ |
---|---|
5.x | 5.2.0 - 6.0.0 |
6.x | 5.2.0 - 6.1.0 |
7.x | 7.0.0 + |
8.x | 8.0.0 + |
๐๏ธ Shadow v5.+๋ Gradle 5.x - 6.x ๋ฐ Java 7 - 15์๋ง ํธํ๋๋ฉฐ v6.1.0+์๋ Java 8+๊ฐ ํ์ํ๋ค.
2. Gradle์์ shadowJar๋ฅผ ์คํํ๋ค.
ํ์ผ์ด๋ฆ-all.jar
ํํ๋ก ๊ฒฐ๊ณผ๋ฌผ์ด ์์ฑ๋๋ค.