Spring | Spring 프로젝트 생성 | 프로젝트와 pom.xml
생성된 프로젝트 폴더 (여기에서는 “MySpringApp” 폴더)에는 ‘src’폴더와 ‘pom.xml’ 파일이 생성되어 있다.
src 폴더는 프로젝트 파일들을 모와두는 곳이다. 여기에는 다음과 같은 폴더가 있다.
main 폴더 - 프로그램에서 사용하는 파일를 모와둔 곳이다.
test 폴더 - 프로그램에서 사용하는 단위 테스트의 소스 코드를 모와둔 곳이다.
“main"폴더 안에는 “java"폴더가 있고 그 안에 패키지의 폴더 구성에 “App.java"라는 소스 코드 파일이 생성되어 있다. 이것은 샘플로 작성된 소스 코드 파일로, 내용은 Spring Framework과는 전혀 관계가 없는 그냥 간단한 Java 응용 프로그램이다.
또 하나는 Maven 프로젝트에서 매일 중요한 파일인 “pom.xml"이다. 이 파일은 프로젝트에 필요한 라이브러리 등의 정보를 기술한 파일이다. Maven은 이 파일의 정보를 바탕으로 필요한 파일을 다운로드하고 프로젝트를 생성을 한다. 즉,이 pom.xml 파일을 제대로 작성하지 않으면 프로젝트를 제대로 만들 수 없다.
.
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── devkuma
│ └── spring
│ └── App.java
└── test
└── java
└── com
└── devkuma
└── spring
└── AppTest.java
아래에 기본적으로 기술되는 pom.xml 내용의 예시이다. pom.xml은 <project>라는 태그에 다음과 같은 태그를 구성하고 있다.
<groupId> 그룹 아이디는 프로젝트마다 접근할 수 있는 고유한 이름이다. 보통은 패키지 네이밍룰(도메인 뒤집기)을 따르는게 정석이다. 이후에 원하는 만큼 하위 그룹을 만들 수 있다.
<artifactId> 아트팩트 아이디는 jar 파일에서 버젼 정보를 뺀 이름이다. 자유롭게 적되, 소문자를 사용하고 이상한 특수문자를 사용하지 않는다.
<version> 버전을 나타내는 텍스트이다.
<packaging> 패키지 종류이다. jar, war, pom 등이 있으며 여기서는 jar로 지정하여 패키징을 하면 jar이 생성된다.
<name> 프로젝트 이름이다.
<url> URL이다. 일반적으로 http://maven.apache.org 이 지정되는 것이 보통이다.
<properties> 각종 속성이 기술되는 곳이다. 여기에서는 **<project.build.sourceEncoding>**라는 것이지정되어 있다. 이것은 프로젝트의 기본 인코딩을 지정하는 것이다.
<dependencies> 이 안에는 **<dependency>**라는 태그를 사용해서 필요한 라이브러리 정보를 기술한다. 기본적으로 JUnit 라이브러리에 대한 정보가 기술되어 있다.
이런 태그들을 작성하고 필요한 라이브러리를 구성해 나가는 것이 Maven에 의한 프로젝트 만들기의 기본이다.
<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.devkuma.spring</groupId>
<artifactId>MySpringApp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MySpringApp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>