Java Web アプリを作成する
現在、社内サーバーで複数の Java Web アプリを実行しています。 これらのサーバーの保守に関連する高コストを削減するために、会社は Web アプリを Azure App Service に移行したいと考えています。
開発チームは Maven を使用してデスクトップ アプリを作成した経験があり、Java プロジェクトのビルド プロセスを自動化するために Maven を既に使用しています。 Maven ではプロジェクト用のプラグインを使用して追加機能を追加し、アーキタイプを使用して Azure App Service にデプロイできる Web アプリを作成することを理解しています。
このユニットでは、Maven とアーキタイプが Java Web アプリの作成にどのように役立つかを再検討します。 小規模な Java Web アプリを作成し、ローカルで実行する方法について説明します。 次に、Project Object Model (POM) ファイルに追加して、新しいアプリのローカル テストを有効にする方法について説明します。
Maven を使用して Java Web アプリのビルドを自動化する
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 Web アプリ プロジェクトを生成します |
次の演習では、Azure にデプロイできる Web アプリを作成します。 たとえば、Maven を使用して新しい Java Web アプリを作成するには、次の構文を使用します。
mvn archetype:generate \
-DgroupId=com.microsoft.example \
-DartifactId=MyWebApp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
上記のコマンドを実行すると、次の内容を含むプロジェクト ディレクトリ構造が作成されます。
Project Object Model (POM) ファイルとは
Maven プロジェクトの主要なコンポーネントの 1 つは、プロジェクト オブジェクト モデル (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ファイルの内容を示しています。
<?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 ファイルに追加する必要があります。 開発者が自分のコンピューターで Web アプリをローカルで実行できる便利なプラグインが 2 つあります。 Eclipse Jetty と Apache Tomcat です。 Azure App Service プラグインでは、これらの両方の Web サーバーがサポートされています。 これらのサーバーのいずれかをプロジェクトに追加するには、プラグインの必要な 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 プラグインの 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 アプリを作成します。