Maven 입문 | Web 응용 프로그램 개발 | Web 응용 프로그램 생성


일반적인 Java 응용 프로그램과 달리 Web 응용 프로그램은 여러가지 고려해야 할 것이 있다. 먼저 프로그램의 구성이다. 일반적인 Web 응용 프로그램 개발에서는 Web에 공개하는 디렉토리를 준비하고 그 안에 JSP 등을 배치한다. 또한 “WEB-INF"폴더를 준비하고, 거기에 web.xml을 준비한다. 이러한 디렉토리의 구성에 따라 프로젝트를 만들어 나가야 한다.

또한, Web 응용 프로그램은 그대로 실행할 수 없다. 실행은 서블릿 컨테이너(이른바 Java 서버)가 필요하다. 서버를 시작하고, 거기 Web 응용 프로그램이 배포되어야 사용할 수 있게 된다.

이에 따라, Web 어플리케이션의 개발에는 일반 Java 어플리케이션과는 다른 만드는 방법이 필요하다.

maven-archetype-webapp를 사용하기

Web 응용 프로그램의 프로젝트 작성에는 “maven-archetype-webapp"라는 것을 사용한다. 명령 프롬프트 또는 터미널에서 다음과 같이 실행한다.

$ mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

이것으로 Web 응용 프로그램의 프로젝트를 생성하기 위한 템플릿이 사용된다. 예제로 다음과 같이 항목을 입력한다.

Define value for property 'groupId': : com.devkuma
Define value for property 'artifactId': : SampleWebApp
Define value for property 'version':  1.0-SNAPSHOT: : 
Define value for property 'package':  com.devkuma: : 
  • 그룹 ID : com.devkuma
  • 아티팩트 ID : SampleWebApp
  • 버전 : 1.0-SNAPSHOT : :( 기본 상태)
  • 패키지 : com.tuyano.libro : :( 기본 상태)

입력이 완료되면 SampleWebApp라는 프로젝트가 생성된다. 이것을 바탕으로, Web 어플리케이션 개발을 하면 된다.

생성된 프로젝트의 구성

그럼 생성된 프로젝트가 어떻게 되어 있는지 확인해 보자. 프로젝트 폴더를 열면 다음과 같은 구성으로 되어 있다.

SampleMavenApp 폴더

.
├── pom.xml
└── src
    └── main
        ├── resources
        └── webapp
            ├── WEB-INF
            │   └── web.xml
            └── index.jsp

main 폴더의 내용

src 폴더 안에는 main 폴더가 있고, 그 안에는 java 폴더가 아닌 대신에, resources와 webapp이 배치된다. 또한 test 폴더도 포함되어 있지 않다.

resources 폴더

resources 폴더는 그 이름 그대로, Web 어플리케이션의 프로젝트에 필요한 리소스 파일을 배치하는 곳이다.

webapp 폴더

이 폴더가 Web 어플리케이션으로서 공개되는 부분이다. 이 안에는 JSP 파일과 WEB-INF 폴더가 준비되어 있다. HTML 및 CSS, JavaScript 등의 파일이 그 안에 들어 가면 된다.

서블릿은?

Java 프로젝트이면서, 여기에는 java 폴더가 없다. 서블릿 등을 만들려고 하면 어떻게 되는 거야? 라고 생각한 사람도 있을 것이다.

java 폴더는 없지만, 프로그램 작성의 기본은 동일하다. 따라서 main 폴더에 java 폴더를 준비하고, 그 안에 패키지 폴더 및 소스 코드 파일을 배치해 나가면 된다.

생성된 pom.xml

생성된 프로젝트의 pom.xml이 어떻게 되어 있는지 확인하자. 아래에 디폴트 상태의 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</groupId>
  <artifactId>SampleWebApp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>SampleWebApp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>SampleWebApp</finalName>
  </build>
</project>

보면 알 수 있듯이, pom.xml 자체는 일반적인 Java 응용 프로그램의 pom.xml와 거의 변함이 없다.

우선, 이제 제대로 개발할 수 있는지 확인해 본다. 다음 명령을 실행해 보자.

$ mvn package

실행하면 target 폴더가 생성되고, 그 안에 SampleWebApp.war 파일이 생성된다. 이 파일의 압축을 풀어 보면, webapp 폴더의 내용을 정리하고 있다. 또한, main 안에 java 폴더를 생성하고, 소스 코드를 준비 했다면, WEB-INF 폴더에 classes 폴더를 배치되고 거기에 클래스 파일이 포함될 것이다. 일단, Web 어플리케이션으로의 기본 부분은 잘 만들어져 있는 것을 알 수 있다.

이것으로 Maven 명령에서 war 파일을 만들고 이것을 Java 서버에 배포한다면, 이것으로 충분히 개발이 가능할 것이다.