Maven で WAR を作成して、Hello World を出力する方法を書いていきます。
バージョン
ブログ執筆時の製品バージョンは以下の通りです。
ディレクトリ階層の作成
以下のコマンドで、サンプルプロジェクト sample-war
のディレクトリ階層を作成します。
mkdir sample-war cd sample-war mkdir src\main\java\org\sample\war mkdir src\main\webapp\WEB-INF
資源の配置先は以下の通りです;
pom.xml の作成
以下の pom.xml
を作成します。
sample-war/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>org.sample</groupId> <artifactId>sample-war</artifactId> <version>1.0.0</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>sample-war</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> </project>
<finalName>
で war の名前を指定しています。指定しないと、アーティファクトID+バージョン(sample-war-1.0.0.war
)になります。
サーブレットの作成
以下のサーブレットを作成します。
sample-war/src/main/java/org/sample/war/HelloServlet
package org.sample.war; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @WebServlet("/hello") @SuppressWarnings("serial") public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); res.setCharacterEncoding("UTF-8"); res.getWriter().println("Hello World"); } }
HTML の作成
以下の HTML を作成します。
sample-war/src/main/webapp/index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sample WAR</title> </head> <body> <p>Hello World</p> </body> </html>
WAR の作成
sample-war
の下で以下のコマンドを実行します。
mvn package
テストをスキップしたい場合は、以下のコマンドを実行します。
mvn compile war:war
実行すると、target/sample-war.war
が作成されています。
デプロイ・コンテナ起動
Tomcat の webapps
配下に war を配置してコンテナを起動します。
動作確認
ブラウザで以下の URL にアクセスすると、Hello World が表示されます。
http://localhost:8080/sample-war/hello
http://localhost:8080/sample-war/index.html