JPA(Java Persistence API) | JPA 이용 준비 | pom.xml 작성하기

Maven 프로젝트 빌드에 대한 상세한 설정 등을 pom.xml이라는 파일에 작성한다. 프로젝트를 만들려면 이 pom.xml에 필요한 라이브러리 등의 정보를 작성하면 된다.

이번에는 Web 응용 프로그램에 필요한 라이브러리와 JPA 이용에 필요한 것을 준비하려고 한다. 어떤 것이 필요한지 정리해 보도록 하겠다. 우선, Web 어플리케이션 관련부터 설명하겠다.

Web 응용 프로그램에 필요한 라이브러리

<!-- jetty -->
<dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>${jetty.version}</version>
</dependency>
<dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-webapp</artifactId>
        <version>${jetty.version}</version>
</dependency>

Web 응용 프로그램은 서블릿 컨테이너(이른바 Java 서버) 기능이 필요하다. 여기에서는 Jetty를 Web 응용 프로그램 내에서 사용하기 하였다. 이에 해당되는 라이브러리가 jetty-server와 jetty-webapp의 두 가지이다.

이 라이브러리를 포함하여 Web 응용 프로그램을 그대로 Jetty 서버에서 실행될 수 있게 한다. 또한 Jetty 등의 서블릿 컨테이너에는 Web 응용 프로그램의 기본 API (서블릿과 JSP를 위한 라이브러리)가 내장 되어 있어, 일부러 Web 응용 프로그램 작성을 위해 서블릿과 JSP를 위한 라이브러리를 별도 준비할 필요는 없다.

Web 응용 프로그램에서 사용할 플러그인

<!-- jetty plugin -->
<plugin>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-maven-plugin</artifactId>
           <version>${jetty.version}</version>
</plugin>

Jetty 서버 라이브러리를 제공하는 것만으로는 활용할 수 없다. 준비한 Jetty 서버를 사용하여 Web 응용 프로그램을 실행하는 기능도 제공하지 않으면 안된다. 이에 해당되는 플러그인이 jetty-maven-plugin이다.

마무리

이번 프로젝트의 pom.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.devkuma.jpa</groupId>
    <artifactId>JavaApp</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>JavaApp Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jetty.version>9.4.7.v20170914</jetty.version>
    </properties>

    <dependencies>
        <!-- jetty -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>${jetty.version}</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
            <version>${jetty.version}</version>
        </dependency>

        <!--h2-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.196</version>
        </dependency>

        <!-- eclipse.persistence-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
            <version>2.7.0</version>
        </dependency>

        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>JavaApp</finalName>

        <plugins>
            <!-- jetty plugin -->
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>${jetty.version}</version>
            </plugin>
        </plugins>
    </build>
</project>