| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- CoreDNS
- dns forward
- RDB
- 내일배움카드
- 국비지원교육
- 패스트캠퍼스
- reclaim
- 메가바이트스쿨
- DNS
- linux dns
- ssh tunneling
- 127.0.0.53
- k8s
- L2 통작
- Spring boot
- linux domain
- systemd-resolved
- L2 통신
- MegabyteSchool
- MariaDB
- ARP
- PV
- Layer 2
- PVC
- 개발자취업부트캠프
- Today
- Total
hoonii2
[SpringBoot] 01. Spring Boot 프로젝트 배포 본문
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 에 라이브러리 추가 구문을 작성하면 된다.
'개념 공부 > (개발) 02. Spring Boot' 카테고리의 다른 글
| [SpringBoot] Local Spring Boot 에서 SSH Tunneling 을 통한 원격 서버 MariaDB 접근 (0) | 2023.02.10 |
|---|---|
| [SpringBoot] 05. Lombok (0) | 2023.02.03 |
| [SpringBoot] 04. RequestParam vs RequestBody vs ModelAttribute (0) | 2023.01.27 |
| [SpringBoot] 03. Object Mapper (0) | 2023.01.20 |
| [SpringBoot] 02. Properties (0) | 2023.01.13 |