Java Gradle

๊น€์ •ํ›ˆยท2024๋…„ 5์›” 22์ผ

Java

๋ชฉ๋ก ๋ณด๊ธฐ
38/48

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
profile
์•ˆ๋…•ํ•˜์„ธ์š”!

0๊ฐœ์˜ ๋Œ“๊ธ€