[初心-Spring Boot] 프로젝트 생성하기

1. spring initializr


https://start.spring.io
위 사이트에서 새 프로젝트를 만든다.

1-1 빌드 관리 도구 선택


빌드 관리 도구란?

프로젝트 생성, 테스트 빌드, 배포등의 작업을 위한 프로그램이다.
각 라이브러리들을 번거롭게 모두 다운받을 필요없이, 빌드도구 설정파일에 필요한 라이브러리 종류와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 설정파일을 통해 자동으로 다운로드 해주고 이를 간편히 관리해주는 도구이다.

Maven

  • 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시한다.
  • Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다.
  • 예를 들어, "Spring Boot Data JPA Starter" 모듈을 사용하여 프로젝트를 개발하고 싶다면 메이븐 레포지토리에서 해당 모듈을 검색하여 xml 설정파일에 추가하여 사용할 수 있다.
pox.xml 예시
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.programming.mitra</groupId>
    <artifactId>java-build-tools</artifactId>
    <packaging>jar</packaging>
    <version>1.0</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
            </plugin>
        </plugins>
    </build>
</project>

Gradle

  • Apacahe Maven과 Apache Ant에서 볼수 있는 개념들을 사용하는 대안으로써 나온 프로젝트 빌드 관리 툴이다. (완전한 오픈소스)
  • Groovy 언어를 사용한 Domain-specific-language를 사용한다. (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결하다.)
  • 2007년에 처음 개발되었고, 2013년에 구글에 의해 안드로이드 프로젝트의 빌드 시스템으로 채택되었다.
  • 꽤 큰규모로 예상되는 multi-project 빌드를 도울 수 있도록 디자인되었다.
  • Gradle은 프로젝트의 어느부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다.
    -> 업데이트가 이미 반영된 빌드의 부분은 즉 더이상 재실행되지 않는다. (따라서 빌드 시간이 훨씬 단축될 수 있다!)
build.gradle 예시
apply plugin:'java'
apply plugin:'checkstyle'
apply plugin:'findbugs'
apply plugin:'pmd'
version ='1.0'
repositories {
    mavenCentral()
}
dependencies {
    testCompile group:'junit', name:'junit', version:'4.11'
}

무엇을 선택할까...?

Gradle이 Maven 보다 훨씬 간결하고, 빌드시간도 Maven보다 빠르기에 Gradle을 선택하기로 한다.

1-2. 언어 설정


초심에 맞게 자바로 설정 아 코틀린 해보고싶다

1-3. Version 설정



SNAPSHOT은 아직 릴리즈 되지 않은 버전이다.
SNAPSHOT을 제외한 정식 릴리저 버전 중 가장 최신버전인 2.5.2버전을 채택한다.

1-4. Project Meta 설정


Group

group에는 보통 도메인명이 들어간다. 예를들어 네이버 같은 경우는 www.naver.com 이니
com.naver 이런 식으로 그룸명이 설정된다.

Artifact

빌드된 결과물명

Name

project명

Description

project 설명

Package name

프로젝트 내에있는 패키지 명

Packging

둘 다 압축(아카이브) 파일이며 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 있도록 관련 파일(리소스, 속성파일 등)들을 패키징해주는 것이 주 역할이다.

JAR : Java ARchive

.jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있다.
쉽게 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일이다.

WAR : WAR Web Application aRchive

.war 확장자 파일은 servlet / jsp 컨테이너에 배치 할 수 있는 웹 어플리케이션(Web Application) 압축 파일 포맷이다.
JSP, SERVLET, JAR, CLASS, XML, HTML, JAVASCRIPT 등 Servlet Context 관련 파일들로 패키징 되어있다.
WAR는 웹 응용 프로그램를 위한 포맷이기 때문에 웹 관련 자원만 포함하고 있으며 이를 사용하면 웹 어플리케이션을 쉽게 배포하고 테스트 할 수 있다.
원하는 구성을 할 수 있는 JAR 포맷과 달리 WAR은 WEB-INF 및 META-INF 디렉토리로 사전 정의 된 구조를 사용하며 WAR파일을 실행하려면 Tomcat, Weblogic, Websphere 등의 웹 서버 (WEB)또는 웹 컨테이너(WAS)가 필요하다.

여차하면 나중에 바꿀 수 있으므로 일단은 jar로 시작하자

Java

싸지방에 설치되어있는게 8버전이다.....

1-5. Dependencies



Spring boot에 사용할 라이브러리를 넣으면 된다.
각 라이브러리에 있는 친구둘은 뒤에서 알아보도록 하자...! 지금 설명하기 귀찮은건 안비밀...생각해보니까 차피 나중에 해야하는데;; 조삼모산데...

1-6. GENERATE



GENERATE를 클릭하면 압축파일 하나가 나온다. 압축 해제 후 원하는 ide로 실행하자

2. 파일 구조


main과 test로 나뉘는 것을 볼 수 있는데, main은 실제 패키지내에 있는 소스코드, test는 테스트코드가 들어간다.

build.gradle
plugins {
	id 'org.springframework.boot' version '2.5.2'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.rptp'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

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

test {
	useJUnitPlatform()
}

우리가 아까 설정한대로 build.gradle파일이 입력된 것을 볼 수 있다.

3. 실행하기


Application.java를 실행시켜도 되고, 프로젝트 최상위 폴더에서 (build.gradle가 같은 위치의 폴더) cmd로 gradle bootRun을 입력해도 된다.

만약 intellij에서 실행이 비활성화 되어있다면?

github에 push하고 로컬에서 해당 프로젝트 삭제했다가, 새로 생성

3-1 localhost:8080 접속

참조


https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8
빌드 도구, Maven 이란? https://junshock5.tistory.com/114
빌드 관리 도구 Maven과 Gradle 비교하기. https://jisooo.tistory.com/entry/Spring-%EB%B9%8C%EB%93%9C-%EA%B4%80%EB%A6%AC-%EB%8F%84%EA%B5%AC-Maven%EA%B3%BC-Gradle-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0
Java JAR WAR 차이점 및 특징 ( + EAR ) https://ifuwanna.tistory.com/224

좋은 웹페이지 즐겨찾기