Gradle ์์กด์ฑ ์ฃผ์ ์ implementation vs. compile
์น UI/DB ๋ฅผ ์ ์ฉํ ์จ๋ผ์ธ ์ฒด์ค ๊ฒ์์ ๊ตฌํํ๋ ์ค ๋ฆฌ๋ทฐ์ด๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํ๋ค. ์ฒ์ ์น ๊ฐ๋ฐ์ ํด๋ณด๋ ๊ฒ์ด๋ผ์ ์ฐ์ ๋์๊ฐ๊ธฐ ์ํด ์ธํฐ๋ท๊ณผ ํฌ๋ฃจ๋ค์ด ์ถ๊ฐํ dependency
๋ฅผ ์ฐ์ ๊ฐ์ ธ์ ์ถ๊ฐํ์๋๋ฐ ๋ฆฌ๋ทฐ์ด์ ์ง๋ฌธ์ ๋ฐ๊ณ ํด๋น ๊ฐ๋
์ ์ฐพ์๋ณด์๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํด์ ๋ค์์ ๊ธฐ์ตํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
compile
์ Gradle 7.0 ๋ถํฐ depracated ๋๋ฏ๋ก ๋๋ถ๋ถ์ ์ํฉ์์implementation
์ ์ฌ์ฉํ๋๋ก ํ๋ค.
Compile
๊ณผ implementation
์ ๊ฑฐ์ ๊ฐ์ ๊ฐ๋ฅ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ก๊ฐ ๋์ฒด ๋์ด๋ ์๊ด์๋ค.
๊ทธ๋ ๋ค๋ฉด implementation ์์กด์ฑ ์ฃผ์ ์ ๋ฌด์์ผ๊น?
Java ํ๋ก์ ํธ๊ฐ ์คํ์ด ๋ ๋ 2๊ฐ์ classpath๊ฐ ์กด์ฌํ๋ค.
- Complie classpath
- Runtime classpath
Gradle dependency๋ฅผ ์ถ๊ฐํ ๋ ์ ๋๊ฐ์ง ๊ฒฝ์ฐ์ ํ์ํ ์์กด์ฑ๋ค์ด ๋๋์ด์ง๊ณ ๋๋ค ํ์ํ ๊ฒฝ์ฐ๋ ์๋ค. ๋ฐ๋ผ์ ๊ฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ์ถ๊ฐํ ์ ์๋ ๊ฒฝ์ฐ๋ค๊ณผ ๋๊ฐ์ง ๊ฒฝ์ฐ ๋ชจ๋ ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐํ ์ ์๋ ํค์๋๊ฐ ๋ฐ๋ก ์๋ค.
- compileOnly : compile classpath์์ ํ์ํ ๊ฒฝ์ฐ
- runtimeOnly : runtime classpath์์ ํ์ํ ๊ฒฝ์ฐ
- implementation : ์ ๋๊ฐ์ง์ ๋ชจ๋ ํ์ํ ๊ฒฝ์ฐ
์ ๊ฒฝ์ฐ๋ค์ ๋๋์ด์ ์์กด์ฑ์ ์ถ๊ฐํ์ ๋, ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ dependencies์ classpaths์ ๊ฐ๊ฒฐํจ์ผ๋ก ์ปดํ์ผ ์๊ฐ์ด ๋จ์ถ๋๊ณ ํ๋ก๊ทธ๋จ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.