Java 웹앱 만들기

완료됨

회사에서는 현재 내부 서버에서 여러 Java 웹앱을 실행하고 있습니다. 회사에서는 높은 서버 유지 관리 비용을 절약하기 위해 웹앱을 Azure App Service로 마이그레이션하려고 합니다.

개발 팀은 Maven을 사용하여 데스크톱 앱을 만든 경험이 있으며, 여러분은 이미 Maven을 사용하여 Java 프로젝트의 빌드 프로세스를 자동화하고 있습니다. 여러분은 Maven이 프로젝트에 플러그인을 사용하여 추가 기능을 제공한다는 사실을 알고 있으며, 아키타입을 사용하여 Azure App Service에 배포할 수 있는 웹앱을 만들고자 합니다.

이 단원에서는 Maven과 아키타입이 Java 웹앱을 만드는 데 어떤 도움이 되는지 다시 한번 살펴봅니다. 작은 Java 웹앱을 만들고 로컬에서 실행하는 방법을 알아봅니다. 그런 다음 새 앱에 대한 로컬 테스트를 사용하도록 설정하기 위해 POM(프로젝트 개체 모델) 파일에 무엇을 추가해야 하는지 알아봅니다.

Maven을 사용하여 Java 웹앱 빌드 자동화

Maven은 가장 많이 사용되는 Java 빌드 도구이며 Java 기반 프로젝트를 빌드하고 관리하는 데 사용할 수 있습니다. 이 도구를 통해 프로젝트를 빌드하는 표준 방법으로 Java 프로젝트를 빌드하는 방법, 프로젝트를 구성하는 항목에 대한 명확한 정의, 프로젝트 정보를 게시하는 쉬운 방법, 여러 프로젝트 간에 JAR을 공유하는 방법 등에 대한 프로세스를 간소화할 수 있습니다. Maven의 목표는 다음과 같습니다,

  • 빌드 프로세스를 더 쉽게 만듭니다.
  • 새 기능으로 투명하게 마이그레이션합니다.
  • 일관적인 빌드 시스템을 제공합니다.
  • 개발 모범 사례 가이드를 구현합니다.

아키타입이란?

개발자들이 새 프로젝트의 구조를 만들 때 따를 일관적인 모범 사례를 제공할 방법을 모색하던 Maven 창시자들은 다양한 종류의 프로젝트 간에 몇 가지 유사성이 있다는 사실을 발견했습니다. Maven 창시자들은 이 정보를 사용하여 프로젝트 형식을 아키타입이라는 템플릿으로 정의했습니다. Maven은 아키타입을 사용하여 새 프로젝트의 골격을 빠르게 만듭니다. 다음은 몇 일반적인 아키타입의 몇 가지 예입니다.

아키타입 설명
maven-archetype-archetype 아키타입 프로젝트를 생성합니다.
maven-archetype-mojo 샘플 Maven 플러그인을 생성합니다.
maven-archetype-plugin Maven 플러그인을 생성합니다.
maven-archetype-plugin-site Maven 플러그인 사이트를 생성합니다.
maven-archetype-quickstart Maven 프로젝트를 생성합니다.
maven-archetype-simple 간단한 Maven 프로젝트를 생성합니다.
maven-archetype-site APT, XDoc, FML과 같은 몇 가지 지원되는 문서 형식을 보여 주는 Maven 사이트를 생성합니다.
maven-archetype-site-simple 간단한 Maven 사이트를 생성합니다.
maven-archetype-webapp Maven 웹앱 프로젝트를 생성합니다.

다음 연습에서는 Azure에 배포할 수 있는 웹앱을 만듭니다. 예를 들어, Maven을 사용하여 새 Java 웹앱을 만들려면 다음 구문을 사용합니다.

mvn archetype:generate \
  -DgroupId=com.microsoft.example \
  -DartifactId=MyWebApp \
  -DarchetypeArtifactId=maven-archetype-webapp \
  -DinteractiveMode=false

앞의 명령을 실행하면 다음 콘텐츠로 프로젝트 디렉터리 구조가 만들어집니다.

Screenshot of the project folder and file hierarchy.

POM(프로젝트 개체 모델) 파일이란?

Maven 프로젝트의 핵심 구성 요소 중 하나는 POM(프로젝트 개체 모델) 파일입니다. POM 파일은 프로젝트의 디렉터리 트리 안에 존재하며 이름이 pom.xml인 XML 문서입니다. POM 파일은 프로젝트의 속성, 종속성, 빌드 단계, 플러그인 및 목표를 포함합니다. 애플리케이션을 빌드하면 Maven이 사용자 대신 종속성 관리 작업을 수행합니다.

Maven은 플러그인 프레임워크를 기반으로 하며, 개발자는 POM 파일에 플러그인을 추가함으로써 프로젝트의 목표를 정의합니다. Maven을 실행할 때는 mvn [plugin-name]:[goal-name] 구문을 사용하여 특정 목표를 실행할 수 있습니다. 이렇게 하면 Maven이 지정된 [goal-name]까지의 모든 목표를 실행합니다.

다음 예제에서는 이 단원의 이전 섹션에서 나온 maven-archetype-webapp 아키타입을 사용하여 mvn archetype:generate 명령으로 생성된 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.microsoft.example</groupId>
  <artifactId>MyWebApp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MyWebApp 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>MyWebApp</finalName>
  </build>
</project>

Maven 프로젝트에 플러그인을 추가하는 방법

Maven 프로젝트에 플러그인을 추가하려면 해당 플러그인의 XML을 pom.xml 파일에 추가해야 합니다. 개발자는 Eclipse JettyApache Tomcat이라는 두 가지의 유용한 플러그인을 사용하여 컴퓨터에서 로컬로 웹앱을 실행할 수 있습니다. Azure App Service 플러그 인은 이러한 웹 서버를 모두 지원합니다. 프로젝트에 이 서버 중 하나를 추가하려면 <build> 태그에 해당 플러그인의 XML을 추가합니다.

예를 들어, Tomcat 플러그 인을 추가하려면 다음 예와 같은 XML을 추가합니다.

<plugins>
  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
  </plugin>
</plugins>  

참고 항목

플러그인 및 그 관련 정보를 찾아보려면 중앙 리포지토리(https://search.maven.org/)를 검색하세요.

pom.xml 파일에 Tomcat용 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.microsoft.example</groupId>
  <artifactId>MyWebApp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MyWebApp 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>MyWebApp</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
      </plugin>
    </plugins>  
  </build>
</project>

프로젝트에 Tomcat 플러그인을 추가했으면 다음 Maven 명령을 사용하여 Tomcat 서버를 시작하고 웹앱을 테스트할 수 있습니다.

mvn tomcat7:run

이 명령은 앱을 빌드하고, 기본 포트 8080에서 Tomcat 서버를 시작하고, 프로젝트의 src\webapp 폴더에서 index.jsp 페이지를 로드합니다.

다음 연습에서는 Maven을 사용하여 Java 웹앱을 만듭니다.