IntelliJ 초기 설정 및 프로젝트 구조

7166 단어 SpringJavaJava

스프링부트 프로젝트를 위한 초기 세팅

Spring Initializr

스프링 프로젝트 초기 세팅 파일

새로운 프로젝트 생성 > Gradle 프로젝트 선택

*Gradle이란 ?

Groovy를 이용한오픈소스 기반의 빌드 자동화 도구이다. 프로그래머가 반복적으로 해야 하는 코딩을 잘 짜여진 프로세스를 통해 자동 실행하며, 결과물을 생산해내는 작업 방식 및 방법을 통틀어 말한다.

Ant와 Maven의 장점을 모두 가지며, 의존성 관리를 위한 다양한 방법을 제공하고 빌드 스크립트를 XML 언어가 아닌 JVM에서 동작하는 스크립트 언어를 사용한다.

Ant

오래 전에 등장한 자바 기반의 빌드 도구

👍 GOOD

  • 개발자가 원하는 것을 개발할 수 있다는 유연성을 가진다
  • 각 프로젝트에 대한 XML 기반 빌드 스크립트 개발
  • 결과물을 넣을 위치를 정확히 알려줘야 하며, 프로젝트에 특화된 Target과 Dependency를 이용해 모델링 한다.
  • 명확한 빌드 절차가 필요하다
  • 생명주기를 갖지 않기 때문에 각각의 target에 대한 의존관계와 일련의 작업을 정의해주어야 한다.

👎 BAD

  • 유연성이 높으나 프로젝트가 복잡해질 경우, 각각의 Build 과정을 이해하기 어렵다
  • XML, Remote Repository를 가져올 수 없었음
  • 스크립트 재사용이 어려움

Maven

프로젝트에 필요한 모든 의존성을 리스트의 형태로 Maven에 알려, 관리할 수 있도록 돕는 방식

👍 GOOD

  • Dependency를 관리하고, 표준화된 프로젝트를 제공한다.
  • XML, remote repository를 가져올 수 있다. jar이나 class path를 굳이 다운로드 할 필요 없이 선언만으로 사용이 가능하다
  • 하위 XML이 필요 없는 속성도 모두 표기한다

👎 BAD

  • 라이브러리가 서로 종속할 경우 XML이 복잡해진다.
  • 계층적인 데이터를 표현하기 좋지만, 플로우나 조건부 상황을 표현하기엔 어렵다.
  • 편리하지만 맞춤화된 로직 실행이 어렵다.

Gradle의 특징

  • 빠른 기간동안 계속해서 늘어나는 라이브러리 추가 및 관리
  • 프로젝트 진행 시 라이브러리의 버전을 쉽게 동기화함(시간 효율 UP)
  • 스크립트 규모가 작고 읽기 쉬움
  • Multi 프로젝트 지원 가능
  • 설정 주입 방식

📄 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 'jun.spring'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

기존의 gradle 프로젝트에서 추가한 코드가 어떤 역할을 하는지 살펴보자.

buildscript

buildscript {
    ext {    
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

ext: build.gradle에서 사용할 전역변수 선언 ⇒ 초기 설정에서 버전을 전역변수로 선언함으로써 이후에 스프링 부트 버전이 업그레이드 되는 경우, 전역변수의 값만 수정해주면 된다.

repositorie : 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지 지정

mavenCentral( ), jcenter( ) : Android Studio의 Gradle 플러그인 용 저장소
→ jcenter에 라이브러리를 업로드 하면 mavenCentral에 자동 업로드
*IntelliJ는 Maven 저장소의 데이터를 인덱싱하여 관리함!! —자동완성 지원

despendencies : 프로젝트 개발에 필요한 의존성(라이브러리)들을 선언하는 곳
*특정 버전 명시 X → 버전은 위에서 선언한 전역변수를 사용할 것

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

스프링 부트를 사용하기 위한 필수 플러그인 4가지!

apply plugin : 앞서 선언한 플러그인의 의존성들을 적용할 것인지의 여부를 결정한다. 스프링부트 프로젝트 진행 시 위 4가지는 꼭 추가할 것!

기타

(버그) 인텔리제이 환경 설정 할 때 build.gradle 파일에서

Could not find method compile() for arguments [org.springframework.boot:spring-boot-starter-web] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler

의 오류 발생원인: gradle의 버전이 7-인 경우에 compile, testComplie 대신 implementataion, testImplementation 로 바꾸어야 함.
(compile과 testCompile 함수는 더 이상 사용X)

그래도 안된다면 settings >gradle > Build and run using, Run tests using을 모두 Gradle로 바꿔주기! gradle 버전 확인 및 재부팅하는 방법은 아래 사이트 참고**

https://nam-ki-bok.github.io/spring/GradleError/

좋은 웹페이지 즐겨찾기