인텔리제이 장점
- 강력한 추천 기능
- 훤씬 더 다양한 리팩토링 디버깅 기능
- 이클립스의 깃(Git)에 비해 훨씬 높은 자유도
- 프로젝트 시작할 때 인덱싱을 하여 파일을 비롯한 자우너들에 대한 빠른 검색 속도
- HTML과 CSS, JS, XML에 대한 강력한 기능 지원
- 자바, 스프링 부트 버전업에 맞춘 빠른 업데이트
인텔리제이에는 유료와 무료버전이 있는데
저자님은 독자들을 생각해주셔서 무료버전인 InteliJ Community로 환경을 맞춰주셨다. (감사합니다)
InteliJ Community
- 자바 개발에 대한 모든 기능 지원
- Maven, Gradle과 같은 빌드 도구 기능 지원
- 깃 & 깃허브와 같은 VCS(버전 관리 시스템)기능 지원
- 스프링 부트의 경우 톰캣과 같은 별도의 외장 서버 없이 실행 가능
다만, HTML과 CSS, JS에 대한 지원이 없으니 VS Code를 이용하자!
우리는 툴박스를 이용해서 설치 할 것이다.
툴박스
젯브레인의 제품 전체를 관리해주는 데스크톱 앱
안드로이드 스튜디오와 웹스톰, 인텔리제이 커뮤니티/얼티메이트 등등
모든 제품군의 버전 관리와 JVM 옵션등을 조정할 수 있다.
사이트 : https://www.jetbrains.com/ko-kr/toolbox-app/ 다운 버튼을 눌러 다운 받자!
설정은 모두 기본으로
GroupId : com.jojoldu.book
ArtifacrId : freelec-springboot2-webservice
project nane : freelec-springboot2-webservice
project location : /Users/유저이름/Documents/git/book/projects/freelec-springboot2-webservice
buildscript {
ext{
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
이론
여기서 ext
라는 키워드는 build.gradle에서 사용하는 전역변수를 설정하겠다는 의미이다.
코드를 해석하면 org.springframework.boot
에 존재하는 spring-boot-gradle-plugin
을
전역변수 springBootVersion
를 사용해가지고 '2.1.7.RELEASE'
버전을 의존성 주입 받겠다이다.
아직 궁금증
repositories {
mavenCentral()
jcenter()
}
우선 저장소라는 감은 오는데 정확히 어떤 코드인지 살펴봐야 겠다.
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
위 코드는 어떤 플러그인 의존성들을 적용할 것인지를 결정하는 코드이다.
io.spring.dependency-management
플러그인은
스프링 부트의 의존성들을 관리해주는 플러그인이므로 꼭 추가해주도록 하고
앞에 정의된 4개의 플러그인은 자바와 스프링부트를 사용하기 위해서는 필수 플러그인들이니 항상 추가하자
참고로 먼저 정의되어 있던 plugins{id java}
는 지워줘야 한다.
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
repositories는 각종 의존성 라이브러리들을 어떤 원격 저장소에 받을지를 정하는 것이다.
기본적으로는 mavenCentral()
을 많이 사용하지만,
최근에는 라이브러리 업로드 난이도 때문에 jcenter()
도 많이 사용한다.
mavenCentral
본인이 만든 라이브러리를 업로드하기 위해서는 많은 과정과 설정이 필요하다
jcenter
라이브러리 업로드를 간단하게 하였고
jcenter에 업로드를 하면 mavenCetral에도 업로드 될 수 있도록 자동화 할수 있게 되었다.
이 책을 공부하는 우리는 아직 주니어 개발자이므로 두 개다 사용해보자는 의미로
저자님께서 둘 다 등록해보는 예제를 넣어주신 것 같다.
dependencies
프로젝트 개발에 필요한 의존성들을 선언하는 곳
여기서는 'org.springframework.boot:spring-boot-starter-web'
와
'org.springframework.boot:spring-boot-starter-test'
를 받도록 선언되어 있다.
재미있는 점은 인텔리제이는 메이븐 저장소의 데이터를 인덱싱해서 관리하기 때문에
커뮤니티 버전을 사용해도 의존성 자동완성이 가능하다.
즉 우리가 자주 사용하는ctrl+space를 통해 라이브러리를 빠르게 자동 완성 시킬 수 있다.
(여기서 나온 인덱싱이라는 것은 목차 같은 개념으로 메이븐 저장소 데이터 목록을 가지고 있는 것이다.)
여기서 자동완성을 진행할 경우 뒤에 :
이 붙게되는데 원래는 이 뒤에 버전을 입력해주는 것이다.
하지만 따로 명시하지 않을 경우
buildscript 의 org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}
을 따라가기에
우리는 버전을 따로 명시해주지 않는 것이 좋다.
전체 코드
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.jojoldu.book'
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')
}
개인적으로 깃을 블로그로만 활용을 했었기에 나에게 꼭 필요한 학습분야이다.
최근의 개발 상황에서 버전관리는 뺄 수 없는 요소이며
대부분의 IT 서비스 회사는 깃을 통해 버전 관리를 하고 있다.
깃의 원격 저장소 역할을 하는 서비스는 대표적으로 깃허브와 깃랩이 있다.
이번 절에는 프로젝트와 깃허브를 연동할 것이다.
그리고 이과정은 모두 인텔리제이를 통해서 진행할 예정이다.
- 깃허브 회원가입
- 맥에서 command + shift + A 를 눌러서 Action 검색창을 띄운다.
- share project on github를 검색
- 해당 Action을 선택한 후 엔터를 누르면 깃허브 로그인창이 뜬다.
- 깃허브 로그인을 진행
- 생성할 저장소 정보를 입력하는 화면이 나온다.
- [Repository name]필드에 등록한 이름으로 깃허브에 저장소가 생성된다.
- 대부분은 프로젝트 이름을 깃허브 저장소와 같은 이름을 사용하니, 같은 이름으로 등록하자
- share 버튼을 누르면 깃허브 저장소와 동기화를 진행한다.
- 동기화 과정에서 커밋 항목으로 추가할 것인지 묻는 안내문이 나오면 처음에는 NO를 선택하자
- 프로젝트의 첫 번째 커밋을 위한 팝업창이 등장하는데
.idea
를 제외하고 commit 하자
.idea
디렉토리는 인텔리제이에서 프로젝트 실행시 자동으로 생성되는 파일들이기 때문에
깃허브에 올리기에는 불필요하다.
그리고 이러한 설정을 매번 수동으로 진행해주기에는 너무 비효율적이므로
자동으로 할 수 있는 방법도 알아보자
깃에서 특정 파일 혹은 디렉토리를 관리 대상에서 제외할 때는 .gitignore 파일
을 사용한다.
이 파일 안에 기입된 내용들은 모두 깃에서 관리하지 않겠다는 것을 의미한다.
인텔리제이에서는 .gitignore 파일
에 대한 기본적인 지원이 없지만 플러그인을 통해 지원을 할 수 있다.
.gitignore 플러그인
에서 지원하는 기능들은 다음과 같습니다.
- 파일 위치 자동완성
- 이그노어 처리 여부 확인
- 다양한 이그노어 파일 지원
(.gitignore, .npmignore, .dockerignore 등등)
.ignore 플러그인 설치 방법
- command + shift + a 로 Action 창 열기
- plugins로 검색 후 클릭
- 플러그인 팝업창이 뜨는데 기본으로 installed 탭이여서 marketplace 탭으로 이동한다.
- .ignore 를 검색한다.
- .i* 그림의 플러그인을 찾아서 install 한다
- 인텔리제이에서 플러그인을 설치하면 꼭 다시 실행해야 하므로 인텔리제이를 재시작한다.
이제 이렇게 재시작을 했으면 한번 이그노어 파일을 생성해보자
코멘트
우선 나는 여기서 에러가 생겨서 다시 해보려니 command+shift+a 진행시 에러가 났다.
https://jojoldu.tistory.com/420 이동욱 저자님도 이러한 에러가 나서 해결하셨으니 이를 참고하자
또한 내 mac 에서 xcodebuild 에러가 떴는데 이로 인해 git Repository 생성이 조금 문제가 되었다.
이럴 경우
- 터미널에서
sudo xcodebuild -license
를 입력 - 엔터 클릭
- q를 입력
- agree 입력을 진행하면 된다.
참조 사이트는 : https://blog.sz21c.com/573 이다. (감사합니다)
이렇게 모든 문제를 해결하고 git 과 프로젝트를 연결하면 아래 그림과 같이 나온다.
(이건 제가 설정한 것입니다.)
(이런 뷰가 나오도록 에러를 수정했었습니다.)
그래들 다운그레이드 하기
인텔리제이에서 alt+F12 (윈도우/맥 동일) 누르시면 해당 프로젝트 기준으로 터미널이 열리는데요.
거기서 아래와 같이 명령어를 실행하시면 됩니다.
gradlew wrapper --gradle-version 4.10.2