젯브레인의 제품 전체를 관리해주는 데스크톱 앱
모든 제품의 버전 관리와 JVM 옵션 등 조정 가능
이렇게 하면 하단의 작업표시줄에 젯브레인 툴박스 아이콘이 생성된다.
전에 설치해놓은 여러 개발도구가 보인다.
이미 인텔리제이를 설치해서 떠 있지만, 설치되어있지 않은 경우 Available의 Install를 눌러 설치한다.
이렇게 툴박스를 이용하면 버전 관리가 쉬워진다.(나중에 업데이트를 툴박스를 통해 관리할 수 있기 때문)
이외에도 툴박스 인텔리제이 세팅을 보면 다양한 설정 가능
Maximum Heap Size란 인텔리제이 실행시 얼마 만큼의 메모리를 할당할지 결정하는 값을 의미한다.
여기서 내 메모리는 16GB 때문에 2048MB로 변경하였다.
이제 인텔리제이에서 프로젝트를 생성하겠다.
잠깐!!
인텔리제이는 이클립스처럼 워크스페이스 개념이 없다.
프로젝트와 모듈 개념만 존재한다.
그렇기 때문에 인텔리제이를 실행할 때 모든 프로젝트를 한 번에 불러올 수 없고, 한 화면에서는 하나의 프로젝트만 열린다.
자세한 개념은 다음 글에서...
툴박스에서 인텔리제이를 클릭한다.
뭐 책에서는 테마 설정에 대해 나오지만, 나는 이전에 이미 설치했기 때문에 넘어가겠다.
인텔리제이 단축키는 디폴트 버전을 추천한다.
런처 스크립트, 기본/추가 플로그인 선택 설정은 기본으로 한다.
이제 모든 설정이 끝났다.
Finish를 누르면 gradle 기반의 자바 프로젝트가 생성된다.
plugins {
id 'java'
}
group 'com.springboot.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
위 코드는 자바 개발에 필요한 기본적인 설정만 되어있는 상태이기 때문에 스프링부트에 필요한 설정을 추가해야 한다.
buildscript { // 플러그인 의존성 관리 설정
ext{ // 전역변수를 설정하겠다.
// springBootVersion 전역변수 설정 -> 값 : 2.1.7.RELEASE
// spring-boot-gradle-plugin이라는 스프링부트 그레이들 프로그인의 2.1.7.RELEASE를 의존성으로 받겠다.
springBootVersion = '2.1.7.RELEASE'
}
repositories { // 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지 설정
// 기본
mavenCentral()
// 최근에는 라이브러리 업로드 난이도 때문에 jcenter도 많이 사용
// 이 저장소에 자신이 생성한 라이브러리를 업로드하기 위해서는 많은 과정과 설정이 필요(문제) ->
// jcenter로 인해 라이브러리 업로드 간단해짐(해결)
// jcenter 라이브러리를 업로드하면 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.springboot.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies { // 프로젝트 개발에 필요한 의존성 선언
// testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
// testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
// 특정 버전을 명시하면 안 된다!!
// 버전을 명시하지 않아야 맨 위 ${springBootVersion}을 알아서 따라간다.
// 이렇게 해야 버전 관리가 쉽고 충돌 문제가 해결된다.
}
test {
useJUnitPlatform()
}
위 코드로 변경했다.
인텔리제이는 메이븐 저장소의 데이터를 인덱싱해서 관리하기 때문에 의존성 자동완성이 가능하다.
compile 메소드 안에 라이브러리 이름 앞부분만 추가하고 [Ctrl+Space]하면 해당 라이브러리 목록을 볼 수 있다.
그러면 intellJ가 변경한 내용을 반영하라는 알림을 준다. 아래 버튼을 클릭하여 반영한다.(enable auto-import 이용하면 편하다.)
그레이들 빌드 후 성공적으로 빌드했다는 알림이 떴지만,
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See
https://docs.gradle.org/6.8/userguide/command_line_interface.html#sec:command_line_warnings
이런 알림도 떴다. 근데 걍 버전 업데이트 안 한다..