본문 바로가기
Spring/SpringBoot

0.인텔리제이 환경설정

by 재영스 2021. 3. 20.

목차

    이클립스에 비해 인텔리제이가 갖는 장점?

    • 추천기능(Smart Completion)
    • 더 다양한 리팩토링과 디버깅
    • 이클립스의 Git에 비해 훨 씬 높은 자유도
    • 프로젝트 시작 시 인덱싱을 하여 파일 및 자원들에 대해 빠른 검색
    • 자바,스프링부트 버전에 맞춘 빠른 업데이트

    인텔리제이 정보 링크

    인텔리 제이 설치

    툴박스 - 젯브레인 제품 전체를 관리

    https://www.jetbrains.com/toolbox 

    툴박스에서는 업데이트 및 버전확인가능

    설치 후 메모리 사이즈 설정 4G이하 = 750mb, 이상은 메모리의 $ \frac{1}{8} 부터 \frac{1}{4} 까지 권장$

    프로젝트 생성

    • 스프링 이니셜라이저 를 통해서 진행하면 편하지만, build.gradle를 사용하는 이유는 코드의 역할과 이니셜라이저 외에 추가로 의존성을 추가하는 방법을 배우기 위해서이다.
    • Gradle5 -> Gradle6 로 바뀌면서 교재와는 달라진 부분이 있다. 참고 블로그
    • 버전 업데이트를 하기 위해서 CMD에서 기존 프로젝트가 있는 디렉토리로 이동한 후에 아래 명령어 입력

    기본설정(다큘라, 키맵, 스크립트설정, 플러그인)은 별도로 건들지않고 진행,

    JDK 1.8 > 1.8.0_281

    new project에서 Gradle > JAVA 선택

     

    Gradle?

    더보기

    Gradle

    Gradle은 프로젝트를 위한 범용 빌드 도구

    gradle wrapper

    1. 이미 존재하는 프로젝트를 새로운 환경에 설치할때 별도의 설치나 설정과정없이 곧 바로 빌드할 수 있게 하기 위함
      (Java나 Gradle도 설치할 필요가 없음. 또한 로컬에 설치된 Gradle 또는 Java의 버전도 신경쓸 필요가 없음. 따라서 항상 wrapper를 사용할 것을 권장)
    2. wrapper는 사용자가 Gradle이 설치되어 있지 않아도 Gradle tasks를 실행할 수 있도록 해주는 작은 script, jar 및 등록 정보 파일
    3. wrapper를 생성하면 사용자가 프로젝트를 만든 사람과 동일한 버전의 Gradle을 사용할 수 있음

    생성과정에서 그룹id(로컬에서 관리할 도메인이름인가?), 아티팩트id(프로젝트명) 설정에서 아래와 같이 셋팅

    그레이들 > 스프링 부트 프로젝트로 변경

    build.gradle

    맨 위에 아래내용 추가(프로젝트의 플러그인 의존성 관리를 위한 코드 )

    //gradle 6
    //plugins{ //(1)
    //    id 'org.springframework.boot' version '2.4.1'
    //    id 'io.spring.dependency-management' version '1.0.10.RELEASE' //스프링 부트의 의존성을 관리해주는 플러그인
    //    id 'java'
    //}
    
    buildscript{ //gradle 4
        ext{
            springBootVersion = '2.1.9.RELEASE'
        }
        repositories{
            mavenCentral()
            jcenter()
        }
        dependencies{
            classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        }
    }
    //gradle4
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management' //스프링 부트의 의존성을 관리해주는 플러그인
    
    group 'com.jy.prac'
    version '1.0-SNAPSHOT-'+new Date().format("yyyyMMddHHmm")
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
        jcenter()// 라이브러리 업로드 난이도 때문에 jcenter를 많이 쓴다.
    
        // 최근에 나온 jcenter 라이브러리는 업로드 하면 mavenCentral에도 업로드될 수 있도록 자동화를 할 수 있다.
        // mavenCentral, jcenter 둘 다 등록하여 사용
    }
    
    dependencies { //gradle4
        //gradle6 부터는 compile이 implementation으로 변경되었다.
        
        compile('org.springframework.boot:spring-boot-starter-web')
        //lombok
        compile('org.projectlombok:lombok')
    
        testCompile('org.springframework.boot:spring-boot-starter-test')
    }
    //Junit5
    //test{
    //    useJUnitPlatform()
    //}
    • ext {} : build.gradle 에서 사용하는 전역변수를 설정
      즉, spring-boot-gradle-plugin라는 스프링 부트 그레이들 플러그인의 2.1.7RELEASE를 의존성으로 받겠다는 의미
      • 이렇게 관리해야지 라이브러리들의 버전이 한곳에 집중되어 관리가 편해진다.
    • repositories는 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지를 결정
      • 기본적으로 mavenCentral을 많이 사용하지만 라이브러리 업로드 난이도 때문에 jcenter사용
        • mavenCentral : 커스텀 라이브러리를 업로드하는 것이 힘듦
        • jcenter : 커스텀 라이브러리 업로드 후 mavenCentral에도 업로드 되도록 자동화 가능
    • apply plugin : 앞서 선언한 플러그인 의존성들을 적용할 것이지를 결정
      • io.spring.dependency-management 플러그인 : 스프링 부트의 의존성을 관리(꼭 추가해야함)
      • 4개는 자바와 스프링 부트를 사용하기 위해 필수플러그인들이니 항상 추가한다.
    • dependencies : 프로젝트 개발에 필요한 의존성들을 선언
      ! 인텔리제이는 메이븐 저장소의 데이터를 인덱싱해서 관리(일부분만 치고 자동완성키를 누르면[ctrl+space] 라이브러리목록나옴)

    (1) plugins{ ... }

    plugins {
    	id 'org.springframework.boot' version '2.4.1' // Gradle6에서는 RELEASE 삭제
    	
    	id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    	// 스프링 부트의 의존성들을 관리해 주는 플러그인이라 꼭 추가해줘야 한다.
    	
    	id 'java'
    }
    
    repositories { // 각종 의존성 (라이브러리)들을 어떤 원격 저장소에서 받을지를 정한다.
        mavenCentral()
        jcenter() // 라이브러리 업로드 난이도 때문에 jcenter를 많이 쓴다.
        
        // 최근에 나온 jcenter 라이브러리는 업로드 하면 mavenCentral에도 업로드될 수 있도록 자동화를 할 수 있다.
        // mavenCentral, jcenter 둘 다 등록하여 사용
    }

    (2) test { ... }

    • JUnit5를 사용하기 위해서는 필수로 선언되어야 한다.

    (3) implementation, testlmplementation

    • Gradle 6가 되면서 compile, testCompile은 Soft Deprecate 되었다.
    • 그대신 implementation, testlmplementation 가 추가되었다.
    • 이에 관련된 참고 블로그
    dependencies { // 프로젝트 개발에 필요한 의존성들을 선언하는 곳이다.
    	
    	implementation(org.springframework.book:spring-boot-starter-web')
    	// 기존 교재에서 사용한던 compile 메소드는 Gradle6 가 되면서 implementation으로 교체하여 사용
    	// 하여야 한다.
    	
    	implementation(org.springframework.book:spring-boot-starter-mustache')
    	...
    	...
    }

     

     

    오른쪽 코끼리 돌아가는 아이콘[ctrl+shift+O] 클릭하여 변경사향반영

     

    정상적으로 생성 됨을 확인

     

    깃, 깃허브 연동

    ctrl + shift + A (VSCode의 ctrl+,)열어 share project on github 검색

    깃허브 로그인 후 repository name, remote(인텔리제이에서 보여질 remote repo alias)

    이후 커밋할 프로젝트 목록에서 .gradle하고 .idea 폴더는 제외 후 commit 그러면 .gitignore파일이 생성된다.

     

    !만약 .gitignore 파일이 생성되지 않는다면 .ignore 플러그인을 설치한다.

    그 후 프로젝트에서 [우클릭 > 새로 만들기 > .ignore > .gitignore] 생성된 파일에 아래내용을 추가한다.

    # 프로젝트 제외 경로
    .gradle
    .idea

     

    커밋창 열기 : ctrl + K

    커밋창을 열어 ignore 파일을 추가한 후 커밋, 푸시하자

    댓글