티스토리 뷰

반응형

SPRING INITIALIZR 에서 아무런 설정 변경 없이 생성한 프로젝트 파일(demo.zip)을 다운로드 받고 적당한 위치에 압축을 풀고 내용을 확인하면 아래와 같은 구조의 프로젝트가 생성되어 있습니다.



1. Maven wrapper

.mvn 디렉토리에는 Maven wrapper 가 포함되어 있고, 최상위 디렉토리에는 mvnw 와 mvnw.cmd 라는 파일이 포함되어 있습니다.

SPRING INITIALIZR 에서 기본으로 Maven Project 로 선택되어 있기 때문에 포함되어 있는 디렉토리와 파일이며, Gradle 로 변경해서 다운로드 받는다면 Gradle wrapper 가 존재할 것입니다.

이 wrapper 의 역할은 Java 가 실행될 수 있는 환경에서라면 별도의 Apache Maven 설치 없이 Maven 을 이용할 수 있도록 해주는 것입니다. 실제 mvnw 와 mvnw.cmd 파일을 텍스트 에디터로 열어보면 sh(*NIX, MacOS 포함)와 Windows cmd 용 스크립트라는 걸 알 수 있습니다.

그러므로 별도로 Maven 을 설치하거나 Eclipse, IntelliJ, Netbeans 같은 IDE 의 힘을 빌리지 않더라도 프로젝트 파일만 받으면 간단한 빌드 작업 등을 처리할 수 있다는 의미입니다.


2. src

Maven 은 Java 진영의 아주 오래된 빌드툴이며, 기존에 많이 이용하던 Ant 을 빠르게 대체했습니다. Maven 은 기본적인 소스와 리소스, 빌드된 바이너리 파일의 구조 등을 제시했고 SPRING INITIALIZR 로 생성된 프로젝트도 Maven 디렉토리 구조를 이용하고 있습니다.

SPRING INITIALIZR 에서 프로젝트 생성 시 입력한 메타데이터의 Group 와 Artifact 을 이용해 src/main/java 하위에 Package 경로를 생성하고, Spring Boot 을 실행하기 위한 기본 Class 파일을 Artifact 을 이용해 생성합니다. 기본 Artifact 가 demo 였기 때문에 DemoApplication.java 파일이 생성되어 있습니다.
이 외에도 Spring Boot 의 설정을 저장할 application.properties, UnitTest 을 위한 src/test/java 디렉토리를 생성하고 Package 경로에 맞게 DemoApplicationsTests.java 라는 예제 파일도 생성을 해줍니다.


3. .gitignore

git 이 대세이긴 대세인가 봅니다. subversion(svn) 도 아직 많이 쓰이고 있는데 말이죠.


4. pom.xml

Maven Project 이기 때문에 pom.xml 은 당연히 생성되어 있습니다. 기본적으로 생성되는 내용은 아래와 같습니다

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

내용을 보면 SPRING INITIALIZR 에서 입력했던 메터데이터 정보가 입력되어 있음을 확인할 수 있습니다.

주목해야 할 부분은 <parent> 부분으로, 이 부분에서 Spring Boot 에 대한 상위 설정 정보를 읽어오기 때문에 하단의 <dependencies> 에서 선언된 <dependency> 에 <version> 이 존재하지 않아도 Spring Boot 개발자들이 정한 라이브러리 버전을 가져올 수 있습니다.


NOTE: Maven 에 대한 자세한 설명은 Spring 의 범주를 벗어나기 때문에 자세히 하지 않겠습니다.


반응형

'Programming > Spring Boot 시작하기' 카테고리의 다른 글

IntelliJ IDEA 에서 프로젝트 개발 환경 구성  (0) 2018.09.04
IDE 프로젝트 파일 생성  (0) 2018.09.04
Dependencies 선택  (0) 2018.09.04
Project Metadata 변경  (0) 2018.09.04
Spring Boot 프로젝트 생성  (0) 2018.09.04
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함