JDK μ€μΉ
π JDK 8 μ€μΉ λ‘ λ€μ΄κ° JDK 8μ μ€μΉνκ³ ν°λ―Έλμμ νμΈνλ€. JDK λ λͺ¨λν°λ§, λλ²κΉ , μ»΄νμΌ λ±λ± μλ° μ΄ν리μΌμ΄μ μ κ°λ°ν λ λμμ£Όλ λ€μν ν΄λ€μ λͺ¨μμ΄λ€. java λͺ λ Ήμ΄λ₯Ό μ΄λμλ μ¬μ©νκ³ μ λ³΄ν΅ νκ²½λ³μλ₯Ό μ€μ ν΄μ£Όλλ° IDEλ₯Ό μ¬μ©νλ κ²½μ°μλ νλ‘μ νΈ μμ± λ JDK μ κ²½λ‘λ₯Ό μ€μ ν΄μ£Όλ―λ‘ νμ§ μμλ λλ€.
user@userui-MacBookPro ~ % java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
IDE μ€μΉ
IDE μ€μμλ λͺ¨λν λμμΈκ³Ό λΉ λ₯΄κ² κ°λ°ν μ μλλ‘ λ€μν κΈ°λ₯μ μ 곡ν΄μ£Όλ IntelliJλ₯Ό μ€μΉν΄λ³΄μ. μ λ£ λ²μ κ³Ό 무λ£λ²μ μΈ Community λ²μ μ΄ μλλ° spring boot 곡λΆμ©μΌλ‘λ Community λ²μ λ§μΌλ‘ μΆ©λΆνλ€. π IntelliJ μ€μΉ λ‘ λ€μ΄κ°μ μ€μΉν΄μ€λ€.
Gradle κΈ°λ°μ μλ° νλ‘μ νΈ μμ±
Gradle μ λΉλ μλν μμ€ν μΌλ‘, νλ‘μ νΈμ λΌμ΄λΈλ¬λ¦¬ νμΌ λ€μ΄λ°μ νλ‘μ νΈμ λ£μ΄μ£Όκ³ μΈν ν΄μ£Όλ μμ μμ΄ μμ£Ό μμ½κ² λ€μν λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°νκ³ λ²μ μ κ΄λ¦¬ν μ μλλ‘ ν΄μ€λ€. μλμ²λΌ Gradle νλ‘μ νΈλ₯Ό μ ννκ³ , JDK μ Java κ° μ νλ κ²μ νμΈν λ€ Next λ‘ μ§ννλ€.
κ·Έλ μ΄λ€ νλ‘μ νΈμ ꡬ쑰λ μλμ κ°λ€. .gradle, gradle, gradlew, gradlew.bat, settings.gradle μ μ λΆ κ·Έλ μ΄λ€ μ€μ νμΌ λ° λλ ν 리λ€. λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°/κ΄λ¦¬νλ νμΌμ build.gradle μ΄κ³ κ°λ°νλ©° μμ£Ό λ³΄κ² λ νμΌμ΄λ€. κ° νμΌ λ° λλ ν λ¦¬κ° λ¬΄μμΈμ§ κ°λ΅νκ² μ 리ν΄λ³΄μλ©΄...
.gradle : gradle μ΄ μ¬μ©νλ ν΄λ. task λ‘ μμ±λ νμΌμ΄ μ μ₯λλ©° κ°λ°μκ° νΈμ§νλ κ²½μ°λ κ±°μ μλ€.
.idea : λ‘컬 IntelliJ IDE ꡬμ±μ΄ ν¬ν¨λ ν΄λλ€.
gradle : gradle μ΄ μ¬μ©νλ ν΄λ. gradle νκ²½μ μ 리ν wrapper νμΌμ΄ μ μ₯λμ΄ μλ€.
src : νλ‘μ νΈ ν΄λλ‘ κ°μ’ μμ€μ½λμ 리μμ€ νμΌμ΄ λ€μ΄κ° μλ€.
main : java μμ€ μ½λκ° λ€μ΄ μλ€.
test : test νμΌμ΄ λ€μ΄ μλ€.
.gitignore : git μ΄ λ¬΄μν νμΌλ€μ λͺ μν κ²μ΄λ€.
build.gradle : gradle μ λΉλ μ€μ νμΌμ΄λ€. groovy μΈμ΄λ‘ μμ±λμ΄ μλ€. μ¬κΈ°μ dependency λ₯Ό λͺ μνλ€.
gradlew : gradle μ λͺ λ Ή νμΌ. macOS μ Linux μ©μ΄λ€.
gradle.bat : gradle μ λͺ λ Ή νμΌ. windows μ©μ΄λ€.
setting.gradle : νλ‘μ νΈ μ€μ μ 보 νμΌμ΄λ€.
Spring boot μμ‘΄μ± μΆκ°
build.gradle νμΌμ μλμ²λΌ μμ ν΄μ€λ€. μμΈν μ¬νμ μ£ΌμμΌλ‘ λ¬μλμλ€. gradle μ νλ‘μ νΈλ₯Ό μμ±νκ³ λΉλν λ mavenCentral λ νμ§ν 리μμ dependencies μ μ€μ λ μμ‘΄μ±(λΌμ΄λΈλ¬λ¦¬)λ€μ λ€μ΄λ°μ νλ‘μ νΈμ μ μ©νλ€.
μ°Έκ³ λ‘ buildscript λ legacy μ½λλ€. π gradle plugins λ₯Ό μ°Έκ³ ν΄ μλμ²λΌ μμ νλ€. λ jcentral() λ νμ§ν 리λ gradle μ΄ λ²μ 3μΌλ‘ μ λ°μ΄νΈλλ©° μ§μμ νμ§ μλλ€κ³ νλ μ§μ°λ©΄ λλ€. dependencies μ λ΄μ©λ compile -> implementation, testCompile -> testImplementation λ‘ λ°κΏμ£Όλ©΄ λλ€.
plugins {
id "org.springframework.boot" version "2.5.7"
id 'io.spring.dependency-management' version "1.0.11.RELEASE" //μ€νλ§λΆνΈ dependencies λ€μ κ΄λ¦¬ν΄μ£Όλ νλ¬κ·ΈμΈμ΄λΌ νμ μ μ©.
id 'java'
}
//νλ‘μ νΈμ μ 보
group 'org.example'
version '1.0-SNAPSHOT'
//dependencies λ₯Ό μ΄λμ λ€μ΄λ°μμ§μ μ 보
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web' //spring boot web κ°λ°μ νμν λΌμ΄λΈλ¬λ¦¬
testImplementation 'org.springframework.boot:spring-boot-starter-test' //spring boot ν
μ€νΈ νκ²½μ νμν λΌμ΄λΈλ¬λ¦¬
}
test {
useJUnitPlatform()
}
μμ νμλ gradle μ΄ λ³κ²½λ λ΄μ©μ λ°μμν€λλ‘ μλ λ²νΌμ λλ₯Έλ€. λ³κ²½λλ©΄ μ½λΌλ¦¬ λ²νΌμ΄ νμ±νλλλ°, λ§μ½ μλ€λ©΄ μ€λ₯Έμͺ½ μλ¨μ Gradle νμ λλ₯΄λ©΄ λ°μ λ²νΌμ΄ λμ¨λ€. μ¬κΈ°μ μ μ©λ dependencies λ₯Ό νμΈν μλ μλ€.
κΉνλΈμ μ°λ
μλμ°λ Ctrl + Shift + A, λ§₯μ Command + Shift + A λ₯Ό λλ¬ Action κ²μμ°½μ μ°λ€ share project on github λ₯Ό κ²μνλ€.
add account λ‘ λ‘κ·ΈμΈνκ³ κΉνλΈμ μ°λνλ€.
첫λ²μ§Έ 컀λ°μ νλ μ°½μ΄ λ°λ‘ λ¨λλ°, .idea λλ ν 리λ μ λ‘λν νμ μλ λλ ν 리μ΄λ―λ‘ μ²΄ν¬ ν΄μ νλ€.
μ λ‘λν νμ μλ νμΌμ λͺ μν΄λμ νμΌμ΄ .gitignore νμΌμ΄λ€. IntelliJ μλ κΈ°λ³Έ μ§μλμ§ μμΌλ―λ‘ νλ¬κ·ΈμΈμ μ€μΉν΄μΌ νλ€. λ€μ Actions κ²μμ°½μ μ΄μ΄ plugins λ₯Ό κ²μνλ€. κ·Έλ¬λ©΄ μλμ κ°μ μ°½μ΄ μ€νλλ€. Marketplace νμ ν΄λ¦νκ³ ignore λ₯Ό κ²μν΄ μ€μΉνλ€. plugins λ IntelliJλ₯Ό λ€μ μ€νν΄μΌ μ μ©λλ―λ‘ λ€μ μ€ννμ.
λ€μ μ€νν ν project νμμ νλ‘μ νΈμ΄λ¦ μ°ν΄λ¦ν΄ gitignore νμΌμ μμ±νλ€.
μ΄ν μ€νλλ νλ©΄μ μ¬μ©μκ° λ―Έλ¦¬ λ§λ€μ΄λ μ΄κ·Έλ Έμ΄ ν νλ¦Ώμ μ ννλ νλ©΄μ΄μ§λ§ μ§κΈμ 미리 λ§λ€μ΄λ κ²μ΄ μμΌλ―λ‘ λ°λ‘ μ°μΈ‘ νλ¨μ generate λ₯Ό λλ¬ μ§ννλ€. μμ±λ .gitignore νμΌμ μλμ²λΌ μ λ ₯νλ€.
# Project exclude paths
.gradle
.idea
λ³κ²½λ μ 보λ₯Ό κΉ μ»€λ°νκΈ° μν΄ Ctrl+K, Command+K λ₯Ό λλ¬ μ»€λ°μ°½μ μ°λ€. μ»€λ° λ΄μ©μ μμ±νκ³ commit and push λ₯Ό λλ₯΄λ©΄ λ°λ‘ κΉ λ νμ§ν 리μ Push λλ€.
κΉνλΈμ κ°μ νμΈν΄λ³΄λ©΄ λ°μλμ΄ μμ κ²μ΄λ€.
κ°λ°νκ²½ κ΅¬μ± λ!