Java Web アプリを作成する

完了

会社は現在、内部サーバーで複数の Java Web アプリを実行しています。 これらのサーバーの保守に関連する高いコストを削減するために、あなたの会社は Web アプリを Azure App Service に移行したいと考えています。

あなたが属する開発チームは Maven でデスクトップ アプリを作成した経験があり、あなたは既に Maven を使用して自分の Java プロジェクトのビルド プロセスを自動化しています。 Maven では、プロジェクトのプラグインで機能が追加されることをあなたは理解しています。そして、原型を利用し、Azure App Service にデプロイできる Web アプリを作成することを望んでいます。

Maven と原型は Java Web アプリの作成に役立ちます。このユニットではそれについて再考します。 小規模な Java Web アプリを作成し、それをローカルで実行する方法を学習します。 次に、新しいアプリのローカル テストを可能にするためには、プロジェクト オブジェクト モデル (POM) ファイルに何を追加するべきかを学習します。

Maven を使用して Java Web アプリのビルドを自動化する

Maven は最も利用されている Java のビルド ツールであり、Java ベースのすべてのプロジェクトのビルドと管理に使用することができます。 これにより、Java プロジェクトの構築手順を、開発者がプロジェクトを構築する標準的な方法で効率化したり、プロジェクトの構成を明確に定義したり、プロジェクトの情報を簡単に発行したり、複数のプロジェクト間で JAR を共有することができます。 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 Web アプリ プロジェクトを生成します

次の演習では、Azure にデプロイできる Web アプリを作成します。 たとえば、Maven を使用して新しい Java Web アプリを作成するには、次の構文を使用することになります。

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

上記のコマンドを実行すると、以下の内容を含むプロジェクト ディレクトリ構造が作成されます。

プロジェクト フォルダーとファイル階層のスクリーンショット。

プロジェクト オブジェクト モデル (POM) ファイルとは何か

Maven プロジェクトの中心的構成要素の 1 つがプロジェクト オブジェクト モデル (POM) ファイルです。これは、pom.xml という名前が付けられた XML ドキュメントであり、プロジェクトのディレクトリ ツリーに置かれています。 POM ファイルには、プロジェクトのプロパティ、依存関係、ビルド フェーズ、プラグイン、目標が含まれます。 アプリケーションをビルドするとき、Maven によって依存関係が自動的に処理されます。

Maven はプラグイン フレームワーク上に構築されます。POM ファイルにプラグインを追加することで、開発者は自分のプロジェクトの目標を定義します。 Maven を実行するとき、構文 mvn [plugin-name]:[goal-name] を使用することで特定の目標を実行できます。Maven によって、指定した [goal-name] まですべての目標が実行されます。

次の例で示す pom.xml ファイルの内容は、このユニットの前セクションの maven-archetype-webapp アーキタイプを利用して、mvn archetype:generate コマンドにより生成されました。

<?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 ファイルに追加する必要があります。 開発者は 2 つの便利なプラグインを利用し、自分のコンピューターで Web アプリをローカル実行できます。それが "Eclipse Jetty" と "Apache Tomcat" です。 いずれの Web サーバーも 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>

Note

プラグインとその関連情報を見つけるには、https://search.maven.org/ の中央リポジトリを検索できます。

Tomcat プラグインの XML を追加すると、<build> 要素は次の例のようになるはずです。

  <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 サーバーを起動して、Web アプリをテストできます。

mvn package cargo:run

このコマンドは、アプリをビルドし、既定のポート 8080 で Tomcat サーバーが起動して、Tomcat サーバーを読み込みます。 Web アプリを読み込むには、http://localhost:8080/MyWebApp に移動します (MyWebApp は pom.xml<finalName> 要素で指定されています)。

Web アプリを読み込むと、プロジェクトの src\webapp フォルダーから既定の index.jsp ページが表示されます。

次の演習では、Maven を利用して Java Web アプリを作成します。