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>