🚧

κ°œλ°œν™˜κ²½ ꡬ성

purpplee 2021. 11. 29. 15:00

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 λœλ‹€.

κΉƒν—ˆλΈŒμ— κ°€μ„œ 확인해보면 λ°˜μ˜λ˜μ–΄ μžˆμ„ 것이닀.

 

 

κ°œλ°œν™˜κ²½ ꡬ성 끝!

λ°˜μ‘ν˜•