[Gradle] implementation, runtimeOnly, compileOnly ์ฐจ์ด์
spring boot ํ๋ก์ ํธ์์ DB ์ธํ ์ ํ๋ค๊ฐ ์๋ gradle ์ค์ ์ ๋ํด ์๋ฌธ์ด ์๊ฒผ๋ค.
implementation 'org.postgresql:postgresql'
runtimeOnly 'org.postgresql:postgresql'
implementation์ ์์ฃผ ์ฐ๋๋ฐ runtimeOnly์ compileOnly์ ๋ํ ๋ช ํํ ์ฌ์ฉ ์์ ์ด ๊ถ๊ธํด์ก๋ค.
Classpath
Classpath๋ ํด๋์ค๋ jar ํ์ผ์ด ์กด์ฌํ๋ ์์น์ด๋ค.
ํฌ๊ฒ complileClasspath, runtimeClasspath๋ก ๋๋์ด์ ธ ์๋ค.
compileClasspath๋ ์๋ฌ์์ด ์ปดํ์ผ์ ํ๊ธฐ ์ํด ํ์ํ ํด๋์ค์ jar ํ์ผ์ด ์์นํ๋ค.
runtimeClasspath๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ์คํ๋๊ธฐ ์ํด ํ์ํ ํด๋์ค์ jar์ ๊ฒฝ๋ก์ด๋ค.
implementation
- ์ง์ ์ ์ผ๋ก ์์กดํ๋ ๋ชจ๋๊น์ง๋ง ๋ฆฌ๋น๋
compileOnly
- ์ปดํ์ผ ์์ ์๋ง ๊ผญ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ช ์
- ์ปดํ์ผ ์ดํ ์คํํ ๋ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์์์ ๋ ์ฌ์ฉ
- ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ฌ์ด์ฆ๊ฐ ์ค์ด๋๋ ์ฅ์ ์ด ์์
- ex) lombok dependency
runtimeOnly
- ์คํ ์์ ์๋ง ์ฌ์ฉ
- ์ปดํ์ผ ์์ ์๋ ํ์์์ง๋ง ์คํ ์์ ์ ๊ผญ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ช ์
- ํด๋น ํด๋์ค์์ ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ํด๋ ์ปดํ์ผ์ ๋ค์ ํ์ง ์์๋ ๋จ
- ex) DB๋ ๋ก๊ทธ ๊ด๋ จ dependency
์ด๋ก ์ ์ผ๋ก ๋ฌด์จ ์๋ฏธ์ธ์ง๋ ๋์ถฉ ์ ๊ฒ ๊ฐ๋ค.
์์ผ๋ก ์ค์ ํ์ผ์์ ์์กด์ฑ ๊ฑด๋๋ฆด ๋ classpath์ ์ถ๊ฐ๋๋ ๊ฒ์ ์ ์ฌํ ๋ณด๋ฉด์ ๋ ์ดํดํด์ผ ํ ๊ฒ ๊ฐ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์๊ฒ ๋๋ ์ฌ์ค์ด ์๋ค๋ฉด ๋ด์ฉ์ ์ถํ์ ์ถ๊ฐํ๊ฒ ๋ค.