Java 웹앱 만들기

완료됨

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

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

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

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

Maven은 가장 자주 사용되는 Java 빌드 도구이며 Java 기반 프로젝트를 빌드하고 관리하는 데 사용할 수 있습니다. 개발자가 프로젝트를 빌드하는 표준 방법, 프로젝트 구성에 대한 명확한 정의, 프로젝트 정보를 게시하는 쉬운 방법 및 여러 프로젝트에서 JAR을 공유하는 방법을 사용하여 개발자가 Java 프로젝트를 빌드하는 방법에 대한 프로세스를 간소화하는 데 도움이 됩니다. 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 \
  -DarchetypeVersion=1.4 \
  -DinteractiveMode=false

위의 명령을 실행하면 다음과 같은 내용이 포함된 프로젝트 디렉터리 구조가 만들어집니다.

프로젝트 폴더 및 파일 계층 구조의 스크린샷.

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

Maven 프로젝트의 핵심 구성 요소 중 하나는 프로젝트의 디렉터리 트리에 있는 XML 문서 pom.xml 인 POM(프로젝트 개체 모델) 파일입니다. POM 파일에는 프로젝트의 속성, 종속성, 빌드 단계, 플러그 인 및 목표가 포함됩니다. 애플리케이션을 빌드할 때 Maven은 종속성 관리를 관리합니다.

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

다음 예제에서는 이 단원의 앞부분 섹션에서 maven-archetype-webapp 아키타입과 함께 mvn archetype:generate 명령에 의해 생성된 pom.xml 파일 내용을 보여 줍니다.

<?xml version="1.0" encoding="UTF-8"?>

<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.microsoft.example</groupId>
  <artifactId>MyWebApp</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>MyWebApp Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>MyWebApp</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      ...
    </pluginManagement>
  </build>
</project>

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

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

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

<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven3-plugin</artifactId>
  <version>1.10.13</version>
  <configuration>
    <container>
      <containerId>tomcat11x</containerId>
    </container>
  </configuration>
</plugin>

비고

플러그 인 및 관련 정보를 찾으려면 .에서 https://search.maven.org/중앙 리포지토리를 검색할 수 있습니다.

Tomcat 플러그 인 <build> 에 대한 XML을 추가하면 요소는 다음 예제와 유사해야 합니다.

  <build>
    <finalName>MyWebApp</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.cargo</groupId>
          <artifactId>cargo-maven3-plugin</artifactId>
          <version>1.10.13</version>
          <configuration>
            <container>
              <containerId>tomcat11x</containerId>
            </container>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

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

mvn package cargo:run

이 명령은 앱을 빌드하고, 기본 포트 8080에서 Tomcat 서버를 시작하고, Tomcat 서버를 로드합니다. 웹 앱을 로드하려면 http://localhost:8080/MyWebApp으로 이동하세요. MyWebApp은 pom.xml 요소의 <finalName>에 지정되어 있습니다.

웹앱을 로드하면 프로젝트의 src\webapp 폴더의 기본 index.jsp 페이지가 표시됩니다.

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