본문 바로가기

Programing/JVM(Java, Kotlin)

Eclipse: Maven을 사용해서 Dynamic Web Project 생성하기

이클립스에서 웹어플리케이션을 생성하려면,

New > Proejct > Web > Dynamic Web Project를 선택하면 JSP 기반의 동적 웹 프로젝트를 만들 수 있다.

이렇게 만든 프로젝트의 레이아웃은 다음과 같다.



하지만 TDD와 Maven의 장점을 Spring MVC 프로젝트에서 느끼고 나서 이 프로젝트 템플릿은 잘 사용하지 않게 되었다.


Spring MVC 프로젝트의 레이아웃은 다음과 같다.


디렉토리가 main/test 쌍으로 되어 있는 것은 Maven의 특성인데 JUnit 같은 테스트프레임워크를 이용한 TDD를 사용할 때 편리한 구조이다. 실제 war로 deploy할 파일을 만들 경우 해당 디렉터리는 빌드에서 제외가 되기 때문에 패키징도 쉽다.

또한 프로젝트에서 필요한 라이브러리(.jar)를 프로젝트의 클래스 패스 경로(예. WEB-INF/lib 등)에 직접 추가를 하는 것이 아닌 pom.xml에 의존성(dependancy)을 추가해주면 Maven이 지역 저장소에 라이브러리를 받아서 관리를 해준다. 이렇게 하면 여러 프로젝트에서 같은 라이브러리를 사용할 경우 하드디스크 용량이 줄어서 좋고, 라이브러리 갱신도 pom.xml만 갱신해주면 되니 좋다. 또한 한 라이브러리가 다른 라이브러리에 의존하고 있을 경우(예. junit 4.11은 hamcrest.core 1.3을 의존한다) Maven이 알아서 의존되는 라이브러리까지 클래스 패스에 넣어준다.


~~~~

서론이 길었고 이클립스에서 Maven / Dynamic Web Project를 생성하는 법을 정리한다.

 - Eclipse Luna, JDK 1.7 기준

 " How to Create Dynamic Web Project using Maven in Eclipse? 를 참고하였다.

Step 1 ~ 5까지 수행하고

이후 pom 파일을 다음과 같이 수정한다. (굵은 부분만)

<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.tistory.namocom</groupId>

        <artifactId>dwpwm</artifactId>

        <packaging>war</packaging>

        <version>0.0.1-SNAPSHOT</version>

        <properties>

               <!-- Test -->

               <junit.version>4.11</junit.version>

        </properties>

        <name>Dynamic Web Project with Maven</name>

        <url>http://maven.apache.org</url>

 

        <dependencies>

               <!-- Servlet -->

               <dependency>

                       <groupId>javax.servlet</groupId>

                       <artifactId>servlet-api</artifactId>

                       <version>2.5</version>

                       <scope>provided</scope>

               </dependency>

               <dependency>

                       <groupId>javax.servlet.jsp</groupId>

                       <artifactId>jsp-api</artifactId>

                       <version>2.1</version>

                       <scope>provided</scope>

               </dependency>

               <dependency>

                       <groupId>javax.servlet</groupId>

                       <artifactId>jstl</artifactId>

                       <version>1.2</version>

               </dependency>

               <!-- Test -->

               <dependency>

                       <groupId>junit</groupId>

                       <artifactId>junit</artifactId>

                       <version>${junit.version}</version>

                       <scope>test</scope>

               </dependency>

        </dependencies>

 

        <build>

               <finalName>dwpwm</finalName>

        </build>

</project> 


만약 여기서 Restlet으로 간다고 하면 아래 pom.xml을 참고하세요.

https://code.google.com/p/namo-web-app/source/browse/trunk/drive/restlet/pom.xml