개념 공부/(개발) 02. Spring Boot

[SpringBoot] 01. Spring Boot 프로젝트 배포

hoonii2 2022. 12. 30. 21:37

0. 개요

https://start.spring.io/ 를 통해 아래 설정을 통해 Spring Boot Project 를 자동화하여 초기 설정된 파일을 사용할 수 있다. 

 

 

1. Project Build 관리 도구

우선 아래와 같이 Project Build 관리 도구를 선택할 수 있다.

 

 

Gradle 과 Maven 으로 확인되고 이 두 방식의 차이는 아래와 같다.

 

 - 외부 라이브러리를 별도로 모두 다운받을 필요 없이, 빌드 도구별로 설정파일에 라이브러리 종류와 버전, 종속성 정보를 명시하면 자동으로 다운로드해주고 이를 간편히 관리해주는 도구이다.

 - 라이브러리 버전마다 의존성이 달라질 수 있는데, 의존관계도 자동으로 관리해주어 편리하게 라이브러리를 사용할 수 있도록 도와준다.

 

 

1-1. Maven

 가. Maven 이란

 - 자바 전용 프로젝트 목적으로 빌드 도구로, Apache Ant 대안으로 만들어졌다.

 - Spring 에서 사용된다

 

 나. Maven 설정 파일

 - setting.xml

  : Maven 을 빌드할 때 의존 관계에 있는 라이브러리와 플러그인을 중앙저장소 -> 로컬저장소 로 다운로드하는데 

로컬저장소의 기본 위치가 정해져 있다. setting.xml 을 통해 이를 변경할 수 있다.

 - pom.xml

  : 프로젝트마다 한 개의 setting.xml 이 존재하고, 필요한 라이브러리를 pom.xml 에 정의하면 해당 라이브러리 및 의존관계에 의한 라이브러리들도 자동으로 다운로드하고 관리해준다.

 

 

1-2. Gradle

 가. Gradle 이란

 - Apache Maven , Apache Ant 에서 쓰는 개념들을 사용하는 대안으로 나온 프로젝트 빌트 관리 툴이다. ( 오픈소스 )

 - Spring Boot 와 안드로이드에서 사용된다. 

 

 나. Gradle 특징

 - 방대하고 복잡해보이는 xml 에 비해 Gradle 은 간결한 정의가 가능하다.

 - Maven 의 상속 구조에 비해 프로젝트 설정 주입 방식으로 정의되어 재사용에 용이하다.

 - xml 이 아닌 Groovy 를 사용하여 코드로서 설정정보를 구성되어 좋은 구조로 이루어져있다.

 - Gradle 설치 없이 Gradle Wrapper 를 이용하여 빌드를 지원

 - 멀티 프로젝트 빌드를 지원하기 위해 설계

 - Maven 과 Ivy Repository 지원

 

  - Groovy

  :  JVM 에서도 사용되는 스크립트 언어이며, Java 와 호환이 되어 Java 클래스 파일을 Groovy 클래스 파일로 사용가능

 

 다. Gradle 설정파일

 - setting.gradle

  : 프로젝트 구성 설정 시 작성하는 파일로, 프로젝트간 의존성이나 서브 프로젝트, 교차 프로젝트 등의 멀티 프로젝트 구성 시 사용. 즉 싱글 프로젝트에선 생략 가능

 - build.gradle

  : 빌드에 관한 모든 기능을 정의하는 파일로, 프로젝트에서 사용하는 환경 설정, 빌드 방법 및 라이브러리 정보 등을 작성하여 프로젝트의 빌드 및 관리 환경을 구성

 

 

 

2. Spring Boot 버전

 - '(SNAPSHOT)' 문구가 붙은 버전은 개발중인 버전으로, 사용 시 숫자로만 이루어진 버전을 사용하는 것을 권장하는 것 같다.

 

 - 상세한 버전 차이는 Spring Boot Release Note 를 참고하면 좋을 것 같다.

https://github.com/spring-projects/spring-boot/releases

 

Releases · spring-projects/spring-boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

 

 

3. 프로젝트 Metadata

 - Group : 프로젝트 관련 도메인 구조로 작성한다.

 - Artifact : 빌드된 결과물 이름을 작성한다.

 - Name : 프로젝트 명을 기입한다.

 - Description : 프로젝트 관련 설명을 작성한다.

 - Package Name : 패키지 명을 작성한다.

 - Packaging : 배포 형태를 의미하는데 Jar/War 특징을 아래와 같다.

  1) Jar : Java 어플리케이션이 동작할 수 있도록 프로젝트를 압축한 형태로, Class 와 라이브러리 파일이 포함되어 있다. JRE 만 있다면 실행가능하다.

  2) War : Servlet , JSP 컨테이너를 배치할 수 있는 웹 어플리케이션을 압축한 파일이다. 웹 프로젝트에 JSP , HTML , JavaScript 등이 포함되어 웹 서버나 WAS 가 필요로 한다.

  --> Jar/War 모두 'java -jar' 을 이용해 배포/동작할 수 있지만 웹 화면이 필요한 어플리케이션은 War 로 패키징, api 서버와 같이 작동한다면 Jar 로 구성한다.

 - Java : 사용하고자하는 Java 버전을 선택한다.

 

 

4. Dependencies

 

 - Spring Web , JDBC , JPA 등의 외부 라이브러리를 복수로 선택하면 자동으로 프로젝트 생성 시 구성시킬 수 있다.

 - 만약 선택을 못했더라도 Maven 은 pom.xml , Gradle 은 build.gradle 에 라이브러리 추가 구문을 작성하면 된다.