현업에서 자바 웹 개발에 가장 많이 사용되는 IDE는 단연 이클립스일 것이다
하지만 최근 IntelliJ의 다음과 같은 장점이 주목받고 있으며 이 책에서는 인텔리제이를 사용해보고자 한다
https://www.jetbrains.com/idea/download
인텔리제이에는 이클립스의 워크스페이스와 같은 개념이 없고, 프로젝트(Project)와 모듈(Module)의 개념만 있다
한 화면에 다수의 프로젝트를 불러올 수 없고 각 프로젝트를 독립적으로 관리한다
ArtifactId
GroupId
스프링 이니셜라이저를 사용하면 간단히 스프링 부트 개발을 위한 환경을 세팅할 수 있지만, 그레이들의 역할과 의미를 알아보기 위해 build.gradle 파일을 직접 수정한다
buildscript {
ext {
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group 'com.vencott.dev'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
build.gradle은 프로젝트의 기본적인 환경 설정이나 의존성 등을 모아놓은 집합이다
각 부분을 자세히 알아보면,
buildscript {
ext {
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
ext 키워드는 build.gradle에서 사용하는 전역변수를 설정하겠다는 것을 의미하며, springBootVersion이라는 변수를 생성하고 그 값을 할당하였다
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
위 4개의 플러그인은 자바와 스프링 부트를 사용하기 위한 필수 플러그인들이니 항상 추가한다
특히, io.spring.dependency-management 플러그인은 스프링 부트의 의존성들을 관리해 주는 플러그인이다
repositories {
mavenCentral()
jcenter()
}
mavenCentral
jcenter
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
의존성 코드는 직접 또는 자동완성으로 작성한다
단, 특정 버전을 명시하지 않도록 주의한다
버전을 명시하지 않으면 상단에 기재한 springBootVersion의 버전을 따라가게 되며, 각 라이브러리들의 버전 관리가 한 곳에 집중되고, 버전 충돌 문제도 해결되는 장점이 있다
IntelliJ - Github 연동을 통해 저장소를 생성하고, 소스코드를 관리한다
gitignore 파일을 수정해 인텔리제이에서 자동으로 생성되는 파일들(.idea, .gradle)을 모두 무시해준다
# Project exclude paths
.gradle
.idea
책 후반부에서 Github에 푸시하면 바로 배포가 진행되는 환경을 구축할 예정이므로 반드시 Github과 연동한다
출처: 이동욱 저, 『스프링 부트와 AWS로 혼자 구현하는 웹 서비스』, 프리렉(2019)