Gradle
์ค์ ํ์ผ build.gradle
๐ ๊ทธ๋ฃจ๋น, ์ฝํ๋ฆฐ : DSL ํนํ ์ธ์ด
DSL(Domain Spefifc Language)
- Domain : ์ ๋ฌธ๊ฐ ์์ญ
- ์ค์ ์์ญ
1. ๋ช
๋ น์ด
1) ๋ฒ์ ํ์ธ
gradle --version
2) ํ๋ก์ ํธ ์์ฑ
- gradle init [--type ํ์
๋ช
]
- build.gradle : ํ๋ก์ ํธ์ ํ์ํ ์์กด์ฑ๊ณผ ๋น๋์ฒ๋ฆฌ ๋ด์ฉ์ ์์ฑํ๋ ํ์ผ
- settings.gradle : ํ๋ก์ ํธ์ ๋ํ ์ค์ ์ ๋ณด๋ฅผ ์์ฑํ๋ ํ์ผ
3) java-application ํ์
์ผ๋ก ์์ฑ ์ ํ๋ก์ ํธ ๊ตฌ์กฐ
4) ํ๋ก์ ํธ ๋น๋
gradle build
gradle clean build : ๊ธฐ์กด ๋น๋๋ฅผ ์ ๊ฑฐ ํ ๋น๋์คํ
- ํ๋ก์ ํธ๋ฅผ ์ปดํ์ผ(๋น๋)ํ๋ค.
- build.gradle์ apply plugin: 'java'๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ .jarํ์ผ๋ก ํจํค์ง๊น์ง ๋๋ค.
- ์ปดํ์ผ๋ ํ์ผ๋ค์ 'app > build' ํด๋ ์์ ์์ฑ๋๋ฉฐ, .jarํ์ผ์ 'build > libs'์ ํจํค์ง๋๋ค.
- ์ปดํ์ผ - ํ
์คํธ(์คํจํ๋ฉด ๋ฐฐํฌโ) - ๋ฐฐํฌ
์ฐธ๊ณ )
๋ฉ์ด๋ธ mvn package : compile test ๋ฐฐํฌ
5) ํ๋ก์ ํธ ์คํ
- gradle run
- ์ปดํ์ผ ํ ๋ฉ์ธํด๋์ค๋ฅผ ์คํํ๋ค.
- ์คํ๋ง๋ถํธ์ ๊ฒฝ์ฐ gradle bootRun์ ํตํด ์ฑ์ ๊ตฌ๋ํ ์ ์๋ค.
6) ํ๋ก์ ํธ ํจํค์ง
- gradle jar
- ํ๋ก๊ทธ๋จ์ .jar๋ก ํจํค์ง
- 'build > libs'์ ์์ฑ๋๋ค.
- apply plugin: 'java'๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ build๋ช
๋ น์ผ๋ก ํด๊ฒฐ๊ฐ๋ฅ
- ํ
์คํธ โ
์ฐธ๊ณ )
gradle bootJark : ์คํ๋ง ๋ถํธ์์
7) ํ๋ก์ ํธ ํด๋ฆฐ
gradle clean : build ๋๋ ํ ๋ฆฌ ์ญ์
8) gradle-wrapper
- gradle' ๋ช
๋ น์ด๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ์ ์์ง๋ง, gradle-wrapper์ ์คํ๋ช
๋ น์ผ๋ก๋ task๋ฅผ ์คํํ ์ ์๋ค.
- ์๋ก์ด ํ๊ฒฝ์์ gradle์ ์ค์นํ์ง ์๊ณ ๋ ๋น๋๊ฐ ๊ฐ๋ฅ
- gradle ๋ช
๋ น์ด์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก gradle์ด ๋ก์ปฌ์ ์ค์น๊ฐ ๋์ด์์ด์ผ ํ๋ค.)
- ๋ํ gradle ๋ช
๋ น์ด๋ก ๋น๋๋ฅผ ํ ๊ฒฝ์ฐ ๋ก์ปฌ์ ์ค์น๋ gradle ๋ฒ์ ผ์ผ๋ก ๋น๋๋๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ ๋น์ ๋ฒ์ ผ๊ณผ ๋ค๋ฅผ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์๋ ์๋ค.
- gradlew build๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ์ฌ๋๊ณผ ๋์ผํ ๋ฒ์ ์ผ๋ก ๋น๋๋ฅผ ํ ์ ์์ผ๋ฉฐ, ์ฌ์ง์ด gradle์ด ์ค์น๋์ง ์์๋ ๋น๋๊ฐ ๊ฐ๋ฅํ๋ค.
2. build.gradle
sourceCompatibity : ์๋ฐ ๋ฒ์
์ฐธ๊ณ
ext{
//์ ์ญ๋ณ์
}
def ๋ณ์๋ช
= ๊ฐ //์ง์ญ๋ณ์
sourceCompatibility = 17 //์ง์ญ๋ณ์
ext{
lbversion = '1.18.32' //์ ์ญ๋ณ์
}
dependencies {
def version= '1.18.32' //์ง์ญ๋ณ์
annotationProcessor "org.projectlombok:lombok:$lbversion" //๋ณ์๋ฅผ ์ ์ฉ
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
dependencies : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
compile, api
- ๋ชจ๋ ์์ ์, ํด๋น ๋ชจ๋์ ์์กดํ๊ณ ์๋ ๋ชจ๋์ ๋ชจ๋ ๋น๋, ๋น๋ ์๋๊ฐ ๋๋ฆฌ๋ค
- compile์ ๊ฒฝ์ฐ Gradle 3.0๋ถํฐ๋ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค(api๋ก ๋์ฒด)
- A(api) <- B <- C๋ก ์์กดํ๋ ํํ๋ผ๋ฉด A ์์ ์ B,C ๋ชจ๋ ๋น๋
implementation
- ๋ชจ๋ ์์ ์, ์ง์ ์์กดํ๋ ๋ชจ๋๋ง ๋น๋, ๋น๋ ์๋๊ฐ ๋น๊ต์ ๋น ๋ฅด๋ค.
- A(implementation) <- B <- C๋ก ์์กดํ๋ ๊ตฌ์กฐ๋ผ๋ฉด, A ์์ ์ B๋ง ๋น๋
testImplementation : ํ
์คํธ์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
annotationProcessor : ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ปดํ์ผ๋ฌ๊ฐ ์ธ์ํ๋๋ก ํจ ์) lombok, queryDSL
compileOnly : complie์๋ง ํ์ํ๊ณ , runtime์๋ ํ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ
runtimeOnly : compile์์๋ ํ์ํ์ง ์์ง๋ง runtime์์๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
developmentOnly : ๊ฐ๋ฐ์์๋ง ํ์ํ๊ณ compile์์๋ ์ ๊ฑฐ ์) springboot devtools