๐Ÿ“–
Kyu9's Repo
  • Library of mameil
  • ์ด์Šˆ ๊ฒฝํ—˜
    • 20230220_ํŠธ๋žœ์žญ์…˜
    • 20230306_์บ์‹ฑ์ด์Šˆ
    • 20230722_ํ…Œ์ŠคํŠธ์ฝ”๋“œ์—์„œ @Transactional
    • 20230807_deadlock
  • ์ธํ„ด ์Šคํ„ฐ๋””
    • Gradle
    • Stream, Optional, ๋žŒ๋‹ค์‹
    • JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ, Garbage Collector
    • RESTful API
    • Microservice Architecture
    • HTTP
    • ์›น์„œ๋ฒ„๋ž€ ๋ฌด์—‡์ธ๊ฐ€
    • Git Branch
    • TDD
    • Redis์„ ์ด์šฉํ•œ ์บ์‹œ
    • Thymeleaf
    • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ž๋ฃŒ๋“ค
    • SpringBoot Management
    • ํ…Œ์Šคํฌ ์ฝ”๋“œ ๋ถ„ํ• 
  • ๋™์•„๋ฆฌ ์Šคํ„ฐ๋””
    • ๊ธฐ๋ณธ SQL ๊ณต๋ถ€
      • SQL์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
      • SELECT ๋ฌธ์žฅ์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ถœ๋ ฅํ•˜๊ธฐ
        • ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ
        • where์ ˆ์— ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
        • SELECT_EX
        • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
      • ๋‹จ์ผ ํ–‰ ํ•จ์ˆ˜ ์‚ฌ์šฉ
        • lower/upper ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • lengthํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • concatํ•จ์ˆ˜ ์‚ฌ์šฉ
        • substr/mid/substring ํ•จ์ˆ˜ ์‚ฌ์šฉ
        • instrํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • lpad/rpad ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • trim/ltrim/rtrim ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • replace ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • round ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • truncate ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • modํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • ceilํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • floorํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • power ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
        • Date fn(๋‚ ์งœ ํ•จ์ˆ˜)
        • ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜
        • ์ผ๋ฐ˜ํ•จ์ˆ˜๋ž€
    • a-ha ์‹ค์Šต
    • ํ˜ผ์ž์„œ ๋งŒ๋“ค์–ด๋ณธ ๊ฒŒ์‹œํŒ
    • AWS ๊ฐ•์˜
  • ํ•™๊ต ๋‚˜๋จธ์ง€ ๊ณต๋ถ€ ์ž๋ฃŒ
    • ์›นํ”„๋ ˆ์ž„์›Œํฌ(Spring)
      • Spring์ด๋ž€?
      • Webframework1-1
      • Webframework1-2
      • SpringBoot์˜ ํŠน์ง•
      • SpringBoot ์ƒ์„ฑ ๋ฐฉ๋ฒ•
      • Spring Data JPA
      • SpringBoot Security
      • SpringBoot HATEOAS
  • ๊ณต๋ถ€ ์ž๋ฃŒ๋“ค
  • WS ์˜จ๋ผ์ธ ์ž๋ฐ” ์Šคํ„ฐ๋””
    • Week1(JVM์€ ๋ฌด์—‡์ด๋ฉฐ ์ž๋ฐ” ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€.)
    • Week2(์ž๋ฐ” ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด)
    • Week3(์—ฐ์‚ฐ์ž)
    • Week4(์ œ์–ด๋ฌธ)
    • Week5(ํด๋ž˜์Šค)
    • Week6(์ƒ์†)
    • Week7(ํŒจํ‚ค์ง€)
    • Week8(์ธํ„ฐํŽ˜์ด์Šค)
    • Week9(์˜ˆ์™ธ์ฒ˜๋ฆฌ)
    • Week10(๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)
    • Week11(Enum)
    • Week12(Annotation)
    • Week13(I/O)
    • Week14(Generic)
    • Week15(๋žŒ๋‹ค์‹)
  • ๋ฐฑ์ค€๋ฌธ์ œ
    • ์ž…์ถœ๋ ฅ๊ณผ ์‚ฌ์น™์—ฐ์‚ฐ
      • We love kriii(10718)
      • ๊ณ ์–‘์ด(10171)
      • ๊ฐœ(10172)
      • A+B(1000)
      • A-B(1001)
      • AxB(10998)
      • A/B(1008)
      • ์‚ฌ์น™์—ฐ์‚ฐ(10869)
      • ๋‚˜๋จธ์ง€(10430)
      • ๊ณฑ์…ˆ(2588)
    • for๋ฌธ
      • ๊ตฌ๊ตฌ๋‹จ(2739)
      • A+B - 3(10950)
      • ํ•ฉ(8393)
      • ๋น ๋ฅธ A+B(15552)
      • N ์ฐ๊ธฐ(2741)
      • ๊ธฐ์ฐ N(2742)
      • A+B - 7(11021)
      • A+B - 8(11022)
      • ๋ณ„ ์ฐ๊ธฐ - 1(2438)
      • ๋ณ„ ์ฐ๊ธฐ - 2(2439)
      • X๋ณด๋‹ค ์ž‘์€ ์ˆ˜(10871)
    • if๋ฌธ
      • ๋‘ ์ˆ˜ ๋น„๊ตํ•˜๊ธฐ(1330)
      • ์‹œํ—˜ ์„ฑ์ (9498)
      • ์œค๋…„(2753)
      • ์‚ฌ๋ถ„๋ฉด ๊ณ ๋ฅด๊ธฐ(14681)
      • ์•Œ๋žŒ ์‹œ๊ณ„(2884)
      • ์˜ค๋ธ ์‹œ๊ณ„(2525)
      • ์ฃผ์‚ฌ์œ„ ์„ธ๊ฐœ(2480)
      • ์˜์ˆ˜์ฆ(25304)
    • While๋ฌธ
      • A+B - 5(10952)
      • A+B - 4(10951)
      • ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด(1110)
    • 1์ฐจ์› ๋ฐฐ์—ด
      • ์ตœ์†Œ, ์ตœ๋Œ€(10818)
      • ์ตœ๋Œ“๊ฐ’(2562)
      • ์ˆซ์ž์˜ ๊ฐœ์ˆ˜(2577)
      • ๋‚˜๋จธ์ง€(3052)
      • ํ‰๊ท (1546)
      • OXํ€ด์ฆˆ(8958)
      • ํ‰๊ท ์€ ๋„˜๊ฒ ์ง€(4344)
    • ํ•จ์ˆ˜
      • ์ •์ˆ˜N๊ฐœ์˜ ํ•ฉ(15596)
      • ์…€ํ”„ ๋„˜๋ฒ„(4673)
      • ํ•œ์ˆ˜(1065)
    • ๋ฌธ์ž์—ด
      • ์•„์Šคํ‚ค์ฝ”๋“œ(11654)
      • ์ˆซ์ž์˜ ํ•ฉ(11720)
      • ์•ŒํŒŒ๋ฒณ ์ฐพ๊ธฐ(10809)
      • ๋ฌธ์ž์—ด ๋ฐ˜๋ณต(2675)
      • ๋‹จ์–ด ๊ณต๋ถ€(1157)
      • ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜(1152)
      • ์ƒ์ˆ˜(2908)
      • ๋‹ค์ด์–ผ(5622)
      • ํฌ๋กœ์•„ํ‹ฐ์•„ ์•ŒํŒŒ๋ฒณ(2941)
      • ๊ทธ๋ฃน ๋‹จ์–ด ์ฒด์ปค(1316)
    • ๊ธฐ๋ณธ์ˆ˜ํ•™-1
      • ์†์ต๋ถ„๊ธฐ์ (1712)
      • ๋ฒŒ์ง‘(2292)
      • ๋ถ„์ˆ˜์ฐพ๊ธฐ(1193)
      • ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค(2869)
      • ACM ํ˜ธํ…”(10250)
      • ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ(2775)
      • ์„คํƒ• ๋ฐฐ๋‹ฌ(2839)
      • ํฐ ์ˆ˜ A+B(10757)
      • Fly me to the Alpha Centauri(1011)
    • ๊ธฐ๋ณธ์ˆ˜ํ•™-2
      • ์†Œ์ˆ˜ ์ฐพ๊ธฐ(1978)
      • ์†Œ์ˆ˜(2581)
      • ์†Œ์ธ์ˆ˜๋ถ„ํ•ด(11653)
      • ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ(1929)
      • ๋ฒ ๋ฅดํŠธ์™€ ๊ณต์กด(4948)
    • ์žฌ๊ท€
      • ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ(11729)
      • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 5(10870)
      • ๋ณ„ ์ฐ๊ธฐ(2447)
    • ๋ธŒ๋ฃจํŠธ ํฌ์Šค
      • ๋ธ”๋ž™์žญ(2798)
      • ๋ถ„ํ•ดํ•ฉ(2231)
      • ๋ฉ์น˜(7568)
      • ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ(1018)
      • ์˜ํ™”๊ฐ๋… ์Š˜(1436)
    • ์ง‘ํ•ฉ๊ณผ ๋งต
      • ์ˆซ์ž ์นด๋“œ(10815)
      • ๋ฌธ์ž์—ด ์ง‘ํ•ฉ(14425)
      • ์ˆซ์ž ์นด๋“œ2(10816)
      • ๋“ฃ๋ณด์žก(1764)
      • ๋Œ€์นญ ์ฐจ์ง‘ํ•ฉ(1269)
      • ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ฐฏ์ˆ˜(11478)
    • ์ •๋ ฌ
      • ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ(2750)
      • ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2(2751)
      • ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3(10989)
      • ํ†ต๊ณ„ํ•™(2108)
      • ์†ŒํŠธ์ธ์‚ฌ์ด๋“œ(1427)
      • ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ(11650)
      • ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ2(11651)
      • ๋‹จ์–ด ์ •๋ ฌ(1181)
      • ๋‚˜์ด์ˆœ ์ •๋ ฌ(10814)
      • ์ปคํŠธ๋ผ์ธ(25305)
      • ์ขŒํ‘œ์••์ถ•(18870)
    • ๋ฐฑํŠธ๋ž˜ํ‚น
      • N๊ณผ M - 1(15649)
      • N๊ณผ M - 2(15650)
      • N๊ณผ M - 3(15651)
      • N๊ณผ M - 4(15652)
      • N-Queen(9663)
      • ์Šค๋„์ฟ (2580)
      • ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ(14888)
      • ์Šคํƒ€ํŠธ์™€ ๋งํฌ(14889)
    • ์ด๋ถ„ ํƒ์ƒ‰
      • ์ˆ˜ ์ฐพ๊ธฐ(1920)
    • ๋™์ ๊ณ„ํš๋ฒ•
      • ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜(1003)
      • ์‹ ๋‚˜๋Š” ํ•จ์ˆ˜ ์‹คํ–‰(9184)
      • 01ํƒ€์ผ(1904)
      • ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด(9461)
      • RGB๊ฑฐ๋ฆฌ(1149)
      • ์ •์ˆ˜ ์‚ผ๊ฐํ˜•(1932)
      • ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ(2579)
      • 1๋กœ ๋งŒ๋“ค๊ธฐ(1463)
      • ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜(10844)
      • ํฌ๋„์ฃผ ์‹œ์‹(2156)
      • ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด(11053)
      • ๊ฐ€์žฅ ๊ธด ๋ฐ”์ดํ† ๋‹‰ ๋ถ€๋ถ„ ์ˆ˜์—ด(11504)
      • ์ „๊นƒ์ค„(2565)
      • LCS(9251)
      • ์—ฐ์†ํ•ฉ(1912)
      • ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ(12865)
      • ๋”ํ•˜๊ธฐ(9095)
    • DFS์™€ BFS
      • ๋ฏธ๋กœํƒ์ƒ‰(2178)
      • ๋ฐ”์ด๋Ÿฌ์Šค(2606)
      • DFS์™€ BFS(1260)
      • ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ(2667)
      • ์ „์Ÿ - ์ „ํˆฌ(1303)
      • ์ˆจ๋ฐ”๊ผญ์งˆ(1697)
      • ๋ฐ์Šค ๋‚˜์ดํŠธ(16948)
      • ๋‚˜์ดํŠธ์˜ ์ด๋™(7562)
      • ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€?(4485)
      • ์Œ์‹๋ฌผ ํ”ผํ•˜๊ธฐ(1743)
      • A->B (16953)
      • ์ˆจ๋ฐ”๊ผญ์งˆ 3(13549)
      • ์ˆจ๋ฐ”๊ผญ์งˆ 2(12851)
    • ๊ตฌํ˜„
      • ์น˜์ฆˆ(2636)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ
    • SQL
      • Animal Table - Oracle
      • Animal Table - MySQL
      • Animal Table2 - Oracle
      • Animal Table 3,4 - Oracle
    • Lv1
      • ๋‘ ๊ฐœ ๋ฝ‘์•„์„œ ๋”ํ•˜๊ธฐ
      • ์ œ์ผ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ
      • ๋ฌธ์ž์—ด ๋‚ด p์™€ y์˜ ๊ฐœ์ˆ˜
      • ์˜ˆ์‚ฐ
      • ์ž๋ฆฟ์ˆ˜ ๋”ํ•˜๊ธฐ
      • ๋‘ ์ •์ˆ˜ ์‚ฌ์ด์˜ ํ•ฉ
      • ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด
      • ๊ฐ€์šด๋ฐ ๊ธ€์ž ๊ฐ€์ ธ์˜ค๊ธฐ
      • ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜?
      • ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž ๋ฐฐ์—ด
      • 2016๋…„
      • ํฐ์บฃ๋ชฌ
      • ์„œ์šธ์—์„œ ๊น€์„œ๋ฐฉ ์ฐพ๊ธฐ
      • ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ
      • ์†Œ์ˆ˜ ๋งŒ๋“ค๊ธฐ
      • ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ ๊ธฐ๋ณธ
      • ์†Œ์ˆ˜ ์ฐพ๊ธฐ(์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด)
      • ์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด
      • ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ
      • ์—†๋Š” ์ˆซ์ž ๋”ํ•˜๊ธฐ
      • ๋ฌธ์ž์—ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ
      • ๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ
      • ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ
      • ์ฝœ๋ผ์ธ  ์ถ”์ธก
      • ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ
      • ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ
      • ๋น„๋ฐ€์ง€๋„
      • ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„
      • ์‹คํŒจ์œจ
      • ๋กœ๋˜์˜ ์ตœ๊ณ  ์ˆœ์œ„์™€ ์ตœ์ € ์ˆœ์œ„
      • ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ
      • ์ •์ˆ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ
    • Lv2
      • ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ
      • ์˜์–ด ๋๋ง์ž‡๊ธฐ
      • ์˜์–ด ๋๋ง์ž‡๊ธฐ
      • N๊ฐœ์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜
      • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜
      • 124 ๋‚˜๋ผ์˜ ์ˆซ์ž
      • ์ง์ง€์–ด ์ œ๊ฑฐํ•˜๊ธฐ
      • ํ”„๋ฆฐํ„ฐ
      • ๋‹ค์Œ ํฐ ์ˆซ์ž
      • ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’
      • ์ตœ์†Œ๊ฐ’ ๋งŒ๋“ค๊ธฐ
      • ์ˆซ์ž์˜ ํ‘œํ˜„
      • JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ
      • ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ
      • ์˜์–ด ๋๋ง์ž‡๊ธฐ
      • ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•
      • ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ
      • ์œ„์žฅ
      • ๊ธฐ๋Šฅ๊ฐœ๋ฐœ
      • ๋” ๋งต๊ฒŒ
      • ์Šคํ‚ฌํŠธ๋ฆฌ
    • ์™„์ „ํƒ์ƒ‰
      • ๋ชจ์˜๊ณ ์‚ฌ(Lv1)
      • ์นดํŽซ(Lv2)
      • ์†Œ์ˆ˜ ์ฐพ๊ธฐ(Lv2)
    • ์ •๋ ฌ(Sorting)
      • K๋ฒˆ์งธ ์ˆ˜(Lv1)
      • ๊ฐ€์žฅ ํฐ ์ˆ˜(Lv2)
      • H-Index(Lv2)
    • ํ•ด์‹œ(Hash)
      • ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜(Lv1)
      • ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก(Lv2)
    • ํƒ์š•๋ฒ•(Greedy)
      • ์ฒด์œก๋ณต(Lv1)
      • ํฐ ์ˆ˜ ๋งŒ๋“ค๊ธฐ(Lv2)
      • ๊ตฌ๋ช…๋ณดํŠธ(Lv2)
    • ๋™์ ๊ณ„ํš๋ฒ•(DP)
      • ์ •์ˆ˜ ์‚ผ๊ฐํ˜•(Lv3)
    • ๊นŠ์ด/๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(DFS/BFS)
      • ํƒ€๊ฒŸ ๋„˜๋ฒ„(Lv2)
      • ๋„คํŠธ์›Œํฌ(Lv3)
      • ๋‹จ์–ด ๋ณ€ํ™˜(Lv3)
  • ์Šคํ”„๋ง๋ถ€ํŠธ ์ฑ…
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
  • JPA ์ฑ…
    • ํ”„๋กœ์ ํŠธ ์„ธํŒ… ๋ฐ ๊ธฐ๋ณธ์„ค์ •
    • ์˜์†์„ฑ ๊ด€๋ฆฌ ๊ฐœ๋…
    • ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘
      • ์‹ค์Šต ์˜ˆ์ œ
    • ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ๊ธฐ์ดˆ
      • ์‹ค์Šต ์˜ˆ์ œ
    • ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘
      • ๋‹ค๋Œ€์ผ, ์ผ๋Œ€๋‹ค ๊ด€๊ณ„
      • ์ผ๋Œ€์ผ, ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„
      • ์‹ค์Šต ์˜ˆ์ œ
    • ๊ณ ๊ธ‰ ๋งคํ•‘
      • ์ƒ์† ๊ด€๊ณ„ ๋งคํ•‘
      • @MappedSuperclass
      • ๋ณตํ•ฉ ํ‚ค์™€ ์‹๋ณ„ ๊ด€๊ณ„ ๋งคํ•‘
      • ์กฐ์ธ ํ…Œ์ด๋ธ”
    • ํ”„๋ก์‹œ์™€ ์—ฐ๊ด€๊ด€๊ณ„ ๊ด€๋ฆฌ
      • ํ”„๋ก์‹œ
      • ์ฆ‰์‹œ ๋กœ๋”ฉ๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ
      • ์˜์†์„ฑ ์ „์ด, ๊ณ ์•„ ๊ฐ์ฒด
    • ๊ฐ’ ํƒ€์ž…
      • ์ž„๋ฒ ๋””๋“œ ํƒ€์ž…
      • ๊ฐ’ ํƒ€์ž…๊ณผ ๋ถˆ๋ณ€ ๊ฐ์ฒด
      • ๊ฐ’ ํƒ€์ž…์˜ ๋น„๊ต, ์ปฌ๋ ‰์…˜
    • ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด
      • JPQL part1
      • JPQL part2
      • JPQL part3
      • QueryDSL
      • NativeSQL
      • ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์‹ฌํ™”
    • ์‘์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
      • ์—”ํ‹ฐํ‹ฐ ์„ค์ •
    • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA
      • ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค
  • Kotlin In Action
    • ์ฝ”ํ‹€๋ฆฐ์˜ ํŠน์ง•
    • ์ฝ”ํ‹€๋ฆฐ์˜ ๊ธฐ์ดˆ
    • ํ•จ์ˆ˜ ์ •์˜์™€ ํ˜ธ์ถœ
    • ํด๋ž˜์Šค, ๊ฐ์ฒด, ์ธํ„ฐํŽ˜์ด์Šค
    • ๋žŒ๋‹ค ๋ฐฉ์‹
    • ์ฝ”ํ‹€๋ฆฐ ํƒ€์ž… ์‹œ์Šคํ…œ
    • ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ๊ธฐํƒ€ ๊ด€๋ก€
    • ๊ณ ์ฐจํ•จ์ˆ˜
    • ์ œ๋„ค๋ฆญ์Šค
    • ์• ๋…ธํ…Œ์ด์…˜๊ณผ ๋ฆฌํ”Œ๋ ‰์…˜
    • ์ฝ”๋ฃจํ‹ด
  • Oracle
    • Oracle ๊ธฐ๋ณธ
    • Oracle ์‹ฌํ™”
  • SQL_์—ฐ์Šต
    • Revising the Select Query
    • Basic Select
    • Advanced Select
    • Basic Select 2
  • SQL ์ฒซ๊ฑธ์Œ(์ฑ…)
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
    • Day 18
    • Day 19
    • Day 20
    • Day 21
    • Day 22
    • Day 23
    • Day 24
    • Day 25
    • Day 26
    • Day 27
    • Day 28
    • Day 29
    • Day 30
  • ๋” ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•
    • JVM ์ดํ•ดํ•˜๊ธฐ
    • ๋ฐ”์ดํŠธ์ฝ”๋“œ ์กฐ์ž‘
    • ๋ฆฌํ”Œ๋ ‰์…˜
    • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋ก์‹œ
    • ์• ๋…ธํ…Œ์ด์…˜ ํ”„๋กœ์„ธ์„œ
  • ๋” ์ž๋ฐ”, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•
    • JUnit5
    • Mockito
    • ๋„์ปค์™€ ํ…Œ์ŠคํŠธ
    • ์„ฑ๋Šฅ, ์šด์˜์ด์Šˆ, ์•„ํ‚คํ…์ฒ˜ ํ…Œ์ŠคํŠธ
  • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”
    • item1 - ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ
    • item2 - ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ
    • item3 - ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ
    • item4 - ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด์„  private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
    • item5 - ์ž์›์„ ์ง์ ‘ ๋ช…์‹œํ•˜์ง€ ๋ง๊ณ  ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๋ผ
    • item6 - ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ
    • item7 - ๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜๋ผ
    • item8 - finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ
    • item9 - try-finally ๋ณด๋‹ค try-with-resources์„ ์‚ฌ์šฉํ•˜๋ผ
    • item10 - equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ
    • item11 - equals์„ ์žฌ์ •์˜ํ•˜๋ ค๋ฉด hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ
    • item12 - toString์„ ํ•ญ์ƒ ์žฌ์ •์˜ํ•˜๋ผ
    • item13 - clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ
    • item14 - Comparable์„ ๊ตฌํ˜„ํ• ์ง€ ๊ณ ๋ฏผํ•˜๋ผ
  • Elastic Search
    • ๊ฐ•์˜ Summary
    • Elastic Summary ๊ฐœ๋… ์ •๋ฆฌ
    • Elastic Summary ์ ์šฉ ์ •๋ฆฌ
  • ํ† ๋น„์˜ ์Šคํ”„๋ง ๊ฐ•์˜
    • ์Šคํ”„๋ง๋ถ€ํŠธ ์‚ดํŽด๋ณด๊ธฐ
    • ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์„œ๋ธ”๋ฆฟ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • k8s
    • minikube ์„ค์น˜
    • jenkins ์ถ”๊ฐ€
  • Article
    • Choosing the Right MessageBroker
Powered by GitBook
On this page
  • Gradle์ด๋ž€?
  • ํ”„๋กœ์ ํŠธ์—์„œ์˜ Gradle ๊ตฌ์กฐ
  • Gradle Task?

Was this helpful?

  1. ์ธํ„ด ์Šคํ„ฐ๋””

Gradle

Previous์ธํ„ด ์Šคํ„ฐ๋””NextStream, Optional, ๋žŒ๋‹ค์‹

Last updated 3 years ago

Was this helpful?

Gradle์ด๋ž€?

์ฐธ์กฐ :

์œ„ํ‚ค๋ฐฑ๊ณผ์—๋Š” Gradle์ด๋ž€ ๊ทธ๋ฃจ๋น„(Groovy)์„ ์ด์šฉํ•œ ๋นŒ๋“œ ์ž๋™ํ™” ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ์ ํ˜€์žˆ๋‹ค.

  • ์—ฌ๊ธฐ์„œ ๊ทธ๋ฃจ๋น„(groovy)๋ž€, ์ž๋ฐ”์— ํŒŒ์ด์ฌ, ๋ฃจ๋น„ ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์–ธ์–ด๋“ค์˜ ํŠน์ง•์„ ๋”ํ•œ ๋™์  ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ Groovy๋Š” JVM์—์„œ ์‹คํ–‰๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์›๋ž˜ ์‚ฌ์šฉํ•˜๋˜ ๋นŒ๋“œ ํˆด์ธ Ant๋‚˜ Maven์„ ์ œ์น˜๊ณ  Gradle์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์—ญ์‹œ ๊ธฐ์กด์˜ ๋นŒ๋“œ ํˆด๋“ค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ  ์žฅ์ ๋งŒ ๋นผ์„œ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Maven๋ณด๋‹ค Gradle์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๊ฐ€๋…์„ฑ : ํƒœ๊ทธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๊ตฌ์ ˆ์ ˆ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋‹ˆ, ์–‘์ด ๋งŽ์•„์งˆ ์ˆ˜๋ก ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค๋‹ค, ์˜์กด ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

  • ํŠน์ • ์„ค์ •์„ ์†Œ์ˆ˜์˜ ๋ชจ๋“ˆ์—์„œ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ€๋ชจ ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•ด์„œ ์ƒ์† ๋ฐ›์•„์•ผ ํ•˜๋Š” maven์˜ ๋‹จ์ ์„ ๋ณด์™„

  • Groovy ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ์ธ ๋นŒ๋“œ๋„ ์›ํ•˜๋ฉด ๋”ฐ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ

  • Gradle์€ ์ž‘์—… ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ฐ˜๋ฉด Maven์€ ์„ ํ˜•์ ์ธ ๋‹จ๊ณ„์˜ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„ ์ฐจ์ด๋„ ๋งŽ์ด ๋‚œ๋‹ค! (์•ฝ 100๋ฐฐ)

Build๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋‚˜์˜ค๋Š”๋ฐ ํ”„๋กœ์ ํŠธ๋ฅผ build ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ์„ ์ปดํ“จํ„ฐ๋‚˜ ํœด๋Œ€ํฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š”(Jar, War ํŒŒ์ผ ๋“ฑ์œผ๋กœ) ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.

Build phase

  1. Initialization : gradle์—์„œ๋Š” ๋‹จ์ผ, ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋‹จ๊ณ„์—์„œ ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋‹จ๊ณ„์ด๋‹ค.

  2. Configuration : ๋นŒ๋“œ๋œ ํ”„๋กœ์ ํŠธ๋“ค์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

  3. Execution : gradle์€ configuration ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑ๋œ ๋ถ€๋ถ„ tasks๋“ค์„ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ์ •๋œ tasks๋“ค์„ ์‹คํ–‰ํ•œ๋‹ค.

Java Plugin tasks๊ฐ„ ์˜์กด๊ด€๊ณ„

Gradle์€ Maven์ด ๊ฐ€์ง€๋Š” ์ƒ์†๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ configuration์„ ํ†ตํ•ด์„œ ํ™•์žฅ์„ ์„ ํƒํ–ˆ๋‹ค. ์ด ํ™•์žฅ์€ plugins์— ์˜ํ•ด์„œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

Gradle์€ plugins์— ๊ฐ’๋“ค์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ๋นŒ๋“œ์— ํ•„์š”ํ•œ task๊ฐ€ ์ถ”๊ฐ€๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ task๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๊นŒ์ง€ ์„ค์ •ํ•จ์œผ๋กœ์จ ๋นŒ๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰

ํ”„๋กœ์ ํŠธ์—์„œ์˜ Gradle ๊ตฌ์กฐ

Gradle์„ ์„ ํƒํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ์ด๋ ‡๋‹ค.

  • build.gradle

  • gradle

    • wrapper

      • gradle-wrapper.jar

      • gradle-wrapper.properties

  • gradlew

  • gradlew.bat

  • settings.gradle

  • src

    • main

    • test

๊ฐ ํŒŒ์ผ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž

build.gradle์ด๋ž€?

Gradle์˜ ๊ธฐ๋ณธ ๋นŒ๋“œ ์„ค์ • ํŒŒ์ผ์ด๊ณ . project ๋นŒ๋“œ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ๊ณณ์ด๋‹ค.

build.gradle์„ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ๋นŒ๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ์˜์กด์„ฑ์ด๋‚˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ๊ณผ ๊ฐ™์€ ์„ค์ •๋“ค์„ ํ•ด์ฃผ๋Š” ๊ณณ์ด๋‹ค.

= ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ํŒŒ์ผ์ด๋‹ค.

์ดˆ๊ธฐ์˜ build.gradle ๋ชจ์Šต

build.gradle์˜ ๋‚ด๋ถ€ ํƒœ๊ทธ

plugins?

Gradle ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋Šฅ์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. java๋‚˜ spring ๊ด€๋ จ ํ‚ค์›Œ๋“œ๋“ค์„ ๋„ฃ์–ด์ค€๋‹ค.

๊ธฐ์กด์—๋Š” apply plugin : 'java' ์ด๋Ÿฐ ์‹์œผ๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ

plugins ๋ธ”๋ก์•ˆ์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์กฐ๊ฐ€ ๋”์šฑ ์‰ฝ๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋‹ค.

'java' : Java ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ โ†’ gradle compile์€ ์ด๊ฑธ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐ€๋Šฅ

'application' : ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ โ†’ gradle run์€ ์ด๊ฑธ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐ€๋Šฅ

repositories?

Gradle์€ library๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ†ตํ•ฉํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— build.gradle ์•ˆ์—์„œ '์–ด๋–ค ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€' ๋ช…์‹œ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋Œ€ํ‘œ์ ์œผ๋กœ mavenCentral()์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋Š” Apache Maven ์ค‘์•™ ์ €์žฅ์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

****

dependencies?

์—ฌ๊ธฐ์— ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” library๋“ค์„ ๋ช…์‹œํ•ด์ค€๋‹ค. ์—ฌ๊ธฐ์— ๋ช…์‹œ๋ฅผ ํ•ด์ฃผ๋ฉด repositories์— ๋ช…์‹œํ•ด๋‘” ์ €์žฅ์†Œ์—์„œ ํ•„์š”ํ•œ library๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

configuration์œผ๋กœ 4๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • compile : ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปดํŒŒ์ผ ๋  ๋•Œ,

  • runtime : ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ โ†’ compile์„ ๋ชจ๋‘ ํฌํ•จ

  • testCompile : ํ”„๋กœ์ ํŠธ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์ปดํŒŒ์ผ ๋  ๋•Œ โ†’ ํ”„๋กœ์ ํŠธ์˜ ์ปดํŒŒ์ผ๋œ ํด๋ž˜์Šค๋“ค๊ณผ compile lib์˜ ์˜์กด์„ฑ ํฌํ•จ

  • testRuntime : ํ”„๋กœ์ ํŠธ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ โ†’ compile, runtime, testCompile์˜ ์˜์กด์„ฑ ํฌํ•จ

implementation?

compile์€ ์• ์ดˆ์— Gradle 3.0 ์ดํ›„๋ถ€ํ„ฐ๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

compile ๊ณผ ์ฐจ์ด๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด

compile ํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ API ๋ชจ๋‘๊ฐ€ ํ”„๋กœ์ ํŠธ์— ์˜ํ•ด์„œ ๋…ธ์ถœ๋˜์ง€๋งŒ implementation์€ ์—ฐ๊ฒฐ๋œ API๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค.

๋˜ํ•œ ์˜์กดํ•˜๋Š” ๋ชจ๋“ˆ์ด ์ด๋ ‡๊ฒŒ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

A๊ฐ€ B๋ฅผ ์˜์กดํ•˜๊ณ  ์žˆ๊ณ , B๊ฐ€ C๋ฅผ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. = A โ†’ B โ†’ C

๋งŒ์•ฝ ๊ฐ€์žฅ ํ•˜์œ„์— ์žˆ๋Š” A ๋ชจ๋“ˆ์ด ์ˆ˜์ •๋˜๊ฒŒ ๋˜๋ฉด,

compile ์‚ฌ์šฉ ์‹œ, A๋ฅผ ์ง์ ‘, ๊ฐ„์ ‘ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” B์™€ C ๋ชจ๋‘ rebuild ๋˜์ง€๋งŒ

implementation ์‚ฌ์šฉ ์‹œ, A๋ฅผ ์ง์ ‘ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” B๋งŒ rebuild๋œ๋‹ค.

=> ๊ฒฐ๋ก  : ๋ชจ๋“ˆ์ด ๋งŽ์œผ๋ฉด ๋งŽ์„์ˆ˜๋ก compile์„ ์‚ฌ์šฉํ–ˆ๋ƒ implementation์„ ์‚ฌ์šฉํ–ˆ๋ƒ ๋กœ build ์†๋„์— ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค.

gradlew? gradlew.bat?

gradle์€ ๊ตณ์ด java๋‚˜ gradle์ด ์—†๋”๋ผ๋„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋˜์–ด์žˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด wrapper์ด๊ณ  ์œ„์˜ gradlew๋Š” gradle + wrapper ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

  • wrapper๋ž€? : ์šด์˜์ฒด์ œ์— ๋งž์ถฐ์„œ gradle ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ

    • ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ? : ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์˜ ๋ช…๋ น๋“ค์„ ํ•˜๋‚˜์˜ ์ผ๊ด„(Batch)๋กœ ์ฒ˜๋ฆฌํ•ด์„œ ์ž๋™ํ™” ํ•ด์ฃผ๋Š” ํŒŒ์ผ

๊ทธ๋ƒฅ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ณ , ์ข…๋ฅ˜๋กœ๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

gradlew์€ linux๋‚˜ mac์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  gradlew.bat์€ ์œˆ๋„์šฐ๊ฐ€ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

settings.gradle

ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์— ์žˆ์–ด์„œ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ์œผ๋ฉด ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ํŒŒ์ผ

์ด๊ณณ์—์„œ ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ๋Š” Gradle์„ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.

์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์˜ setting.gradle์—์„œ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๋“ค์„ ๋„ฃ์–ด์ค€๋‹ค. โ†’ ํŠธ๋ฆฌ ๋ฐฉ์‹์˜ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์‹œ ์‚ฌ์šฉ

๋งŒ์•ฝ ํ•˜๋‚˜์˜ task๋ฅผ ์‹คํ–‰ ์‹œ, ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์— ํ•ด๋‹น task๊ฐ€ ์žˆ๋‹ค๋ฉด ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” task๋„ ์‹คํ–‰๋œ๋‹ค.

src

ํฌ๊ฒŒ mainํด๋”์™€ testํด๋”๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜๋Š”๋ฐ,

main์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฝ”๋“œ๋“ค์„ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ณ 

test์—๋Š” main์˜ ์ฝ”๋“œ๋“ค์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ฝ”๋“œ๋“ค์„ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

Gradle Task?

Task๋ž€ Gradle์˜ ์ž‘์—… ๋‹จ์œ„์ด๊ณ  gradle์—์„œ ์‚ฌ์šฉํ•˜๋Š” groovy ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์„ ์–ธ์€ build.gradle ์•ˆ์—์„œ ์„ ์–ธ์„ ํ•ด์ฃผ๊ณ , intellij ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ gradle์นธ โ†’ Tasks โ†’ other์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ task์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•  ๋•Œ๋Š” gradle 'task' ์ด ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๋ฉด task๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค.

ex) ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ "gradle bootrun" ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” ์ด๋ฏธ ๋‚ด๋ถ€์—์„œ task๋กœ ์„ ์–ธ์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฏธ๋ฆฌ ์„ ์–ธ๋˜์–ด ์žˆ๊ณ , ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ์žˆ์„ ๋งŒํ•œ ๊ทธ๋Ÿฐ Task

init : ํด๋”์— ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด๋‚˜ ํด๋”๋“ค์„ ์ƒ์„ฑํ•˜๊ณ  ํด๋”๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

compileJava : Java ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•œ Task

run : ์ž๋ฐ” ํด๋ž˜์Šค๋‚˜ ํ”„๋กœ์ ํŠธ(์„œ๋ฒ„)๋“ฑ์„ ์‹คํ–‰, ์ฆ‰ main ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” Task

jar : ํด๋ž˜์Šค์™€ ํŒจํ‚ค์ง€๋ฅผ ์—ฎ์–ด์„œ jar ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” Task โ†’ ๋งŒ๋“ค์–ด์ง„ ํŒŒ์ผ์€ build/libs์— ์ €์žฅ๋œ๋‹ค!

clean : ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œ ์‹œ, build ํน๋” ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŒŒ์ผ๋“ค์ด ์ €์žฅ๋˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ํŒŒ์ผ๋“ค์„ ์ œ๊ฑฐํ•œ๋‹ค! ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ผฌ์˜€์„ ๋•Œ, ์ด๊ฑธ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ refreshํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค!

gradle Task์„ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ, ์‹คํ–‰ ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„

gradle compileJava โ†’ gradle run โ†’ gradle jar : ํ”„๋กœ๊ทธ๋žจ์˜ ์ปดํŒŒ์ผ์„ ์ง„ํ–‰ โ†’ ํ”„๋กœ์ ํŠธ main ์‹คํ–‰ โ†’ ํ”„๋กœ์ ํŠธ์˜ jar ํŒŒ์ผ์„ ์ƒ์„ฑ

SpringBoot์—์„œ ์‚ฌ์šฉํ• ๋งŒํ•œ Task

bootRun : springboot ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” Task

bootJar / bootWar : jar / war๋กœ ํŒจํ‚ค์ง•์„ ํ•ด์ฃผ๋Š” Task

๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ป๊ฒŒ ์ปค์Šคํ…€ํ•ด์„œ task์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ?

task์˜ ์„ ์–ธ

์‚ฌ์šฉํ•œ ์˜ˆ์‹œ

์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ cmd์—์„œ gradle hello์„ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

์„ฑ๊ณต์ ์œผ๋กœ println 'THIS IS A TEST!!!!!' ์ด ์ถœ๋ ฅ ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

doFirst, doLast์„ ํ†ตํ•œ task ์ˆ˜ํ–‰ ์ˆœ์„œ ์กฐ์ •

์ด๋ ‡๊ฒŒ ์ƒˆ๋กœ์šด task ์„ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค.

doFirst ๋ธ”๋Ÿญ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์žฅ์ด ๊ฐ€์žฅ ๋จผ์ € ์ถœ๋ ฅ๋˜์•ผํ•˜๊ณ , doLast ๋ธ”๋Ÿญ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์žฅ์ด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ถœ๋ ฅ๋˜์–ด์•ผํ•œ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” First / sequence / Last ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•ด์•ผํ•จ!

์‹ค์ œ๋กœ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋„ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. => -q ์˜ต์…˜์€ ๊ฒฐ๊ณผ๋ฌผ๋งŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก(๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ) ๋‹ค๋ฅธ ์ถœ๋ ฅ๋“ค์„ ์ œ๊ฑฐํ•ด์ฃผ๋Š” ์—ญํ• 

task์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์‹คํ–‰ ๋ฐฉ๋ฒ•์€ ๊ทธ๋ƒฅ task๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜์ง€๋งŒ, ๋ณ€์ˆ˜๋Š” ๋’ค์— -P๋ณ€์ˆ˜๋ช…=๋ณ€์ˆ˜๊ฐ’ ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

์‹คํ–‰ํ•  ๋•Œ๋Š” gradle ํƒœ์Šคํฌ๋ช… -P๋ณ€์ˆ˜๋ช…=๋ณ€์ˆ˜๊ฐ’

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค

Task์•ˆ์—์„œ ๋‹ค๋ฅธ Task์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

tasks.ํ˜ธ์ถœํ• task์ด๋ฆ„.execute()

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค๋ฅธ task์„ ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด after task์˜ doFirst์— ์˜ํ•ด์„œ bbb๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ  ๋‹ค์Œ์œผ๋กœ after๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

์ฐธ์กฐ :

http://www.devkuma.com/books/pages/1064
https://kwonnam.pe.kr/wiki/gradle/buildlifecycle
https://bluayer.com/13