[스프링부트] 1. 스프링부트 프로젝트 생성을 위한 Intellij 환경설정하기

환경

  • Intellij Ultimate
  • Gradle-7.1

교재

  • 스프링부트와 AWS로 혼자 구현하는 웹 서비스

Gradle로 시작하기

  1. New Project → Gradle → Java 선택 후 Next 버튼 누르기

  2. GroupId, ArtifactId, Name 작성하기

    주의: 맨 처음에 안 보일 수도 있는데, 이때 Artifact Coordinates 누르면 아래에 GroupId, ArtifactId, Version이 뜬다.

    • Name = 프로젝트 이름
    • GroupId = 프로젝트들 사이에서 고유하게 식별가능하도록 하는 것임
    • ArtifactId = 버전 정보를 생략한 jar 파일의 이름으로, 프로젝트 이름이 됨
  3. Gradle 프로젝트를 이제 스프링 부트 프로젝트로 변경해보자!

    ✔️  build.gradle 파일에 들어가서 코드 작성

    • 프로젝트 플러그인 선언!
      buildscript {
          ext {
              springBootVersion = '2.1.7.RELEASE'
          }
      
          repositories {
              mavenCentral()
          }
      
          dependencies {
              classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
          }
      }
      • buildscript: Gradle에서 buildscript는 보통 별도의 외부 라이브러리를 가져올 때 사용한다. → 주로 repositories와 dependencies로 구성된다. → 여기서는 스프링 부트 플러그인 사용을 위해 buildscript 설정을 추가한다.
      • ext : build.gradle에서 사용하는 전역변수를 선언할 때 사용 → sprintBootVersion이 여기서 전역변수가 됨. → sprintBootVersion을 2.1.7.RELEASE 사용하겠다는 의미
      • repositories : build.gradle이 저장되어 있는 프로젝트에서 사용하는 각종 의존성(라이브러리)의 위치를 정함. 즉, 이들을 어떤 원격 저장소에 받을지 정함 → mavenCentral : 기본적으로 많이 사용하는 것으로, Apache Maven 중앙 저장소를 이용하기 위해 작성하는 코드임. 쉽게, artifact repository라고 생각하면 됨 → 주의) jcenter은 Gradle 7.0 이후 shutdown 되었다 ⇒ mavenCentral 사용하기 ⇒ Gradle Blog 참고하기 https://blog.gradle.org/jcenter-shutdown
      • dependencies : repository에서 mavenCentral 등 외부 레포지터리를 지정했다면, 해당 레포지터리에서 찾을 라이브러리 명을 입력해야 한다. 이 라이브러리 명을 dependencies에 작성한다. → 다양한 task를 수행할 때 참조하는 종속 라이브러리를 지정할 수 있다. → 위 코드에서는 “클래스 패스의 지정"을 위해 classpath를 사용했다. 이렇게 하면 지정된 라이브러리를 클래스 경로에 추가할 수 있다. 컴파일~실행까지 의존하는 라이브러리 지정에 사용한다. → 위에서 dependencies 안의 문장은 spring-boot-gradle-plugin라는 스프링 부트 그레이들 플러그인의 2.1.7.RELEASE를 의존성으로 받겠다는 의미이다.
    • 플러그인 의존성 적용
      
      apply plugin: 'java'
      apply plugin: 'eclipse'
      apply plugin: 'org.springframework.boot'
      apply plugin: 'io.spring.dependency-management'
      ✔️  위 코드는 자바, 스프링부트 사용하기 위한 “기본" 플러그인 → 필수로 적용하자!
      • io.spring.dependency-management 플러그인은 이름에서도 확인할 수 있듯이 스프링 부트의 의존성들을 관리해주기 때문에 꼭 추가해야 한다.
    • 나머지 코드
      
      group 'com.project.spring'
      version '1.0-SNAPSHOT'
      sourceCompatibility = 1.8
      
      repositories {
          mavenCentral()
      }
      
      dependencies {
          implementation('org.springframework.boot:spring-boot-starter-web')
          testImplementation('org.springframework.boot:spring-boot-starter-test')
      }
      • 주의: dependencies 안에 compile, testCompile이라고 많이 적는데, 이는 Gradle 버전 7 이상에서 Implementation, testImplementation으로 바뀌었다.
      • group은 프로젝트 생성 시 groupId 작성한 것을 말함
      • version은 애플리케이션 버전 이름이고 접미사로 SNAPSHOT이 붙었는데, 이는 개발 중이라는 의미다.
      • sourceCompatibility는 자바소스를 컴파일시키는 역할을 한다. 뒤에 1.8은 자바 버전을 나타냄
      • 여기 repositories는 라이브러리를 가져올 저장소를 설정하는 것이다.
      • 위 코드 dependencies 안에는 컴파일 시 의존 라이브러리, 테스트 컴파일 시 의존 라이브러리가 작성되어 있다. → implementation은 애플리케이션 빌드를 위한 것으로, 해당 라이브러리에 의존하는 의존성만 재빌드한다는 의미이다. 이에 따라, 파일크기나 시간을 절약할 수 있다는 장점을 가진다. → testImplementation은 말 그대로 테스트를 위한 것으로, 여기서는 spring-boot-starter-test 는 런타임 과정을 필요치 않기에, 릴리즈된 패키지를 포함하지 않는다.
    • buildscript 안에 사용하는 dependencies는 task를 사용할 때, 그리고 buildscript 밖에 있는 dependencies는 소스 컴파일 할 때 사용한다.
  4. 컴파일 후 오른쪽 바에 Gradle 메뉴 클릭하고 Dependencies에서 라이브러리 확인하기

    ✔️  컴파일은 control+shift+R(Mac 기준)

    ✔️  아래 4개의 라이브러리 체크되면 잘 진행된 것이다!

    • compileClasspath
    • runtimeClasspath
    • testCompileClasspath
    • testRuntimeClasspath

👉🏻 이렇게 4단계를 통해 Gradle로 스프링부트 프로젝트를 시작하기 위한 초기 설정을 끝냈다! 이 방법 외에도 사실 spring initializr를 통해 스프링부트 프로젝트를 쉽게 시작할 수 있지만, 처음에는 어떤 의미에서 위의 코드들이 작성되는 지 아는 것이 중요하므로 위와 같은 방법으로 해봤다.

✨ 스프링부트 스터디에 참여해 공부를 오늘부터 시작했다. 꾸준히 공부할 예정이니 하나하나 차근차근 배워보자! 오늘은 위와 같이 스프링부트 프로젝트 시작을 위한 gradle 파일을 작성해봤다. 사실 코드를 작성하면서 어떤 의미의 코드인지가 궁금했는데, 찾아보면서 하니까 더 재밌는 것 같다.

좋은 웹페이지 즐겨찾기