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 サーバーにデプロイすれば、十分に開発できるだろう。