【2018年版】Mavenを使ったWebアプリケーションの作成手順
前回、eclipseにSpringの開発ツールであるSTSプラグインをインストールしました。
今回はこれを使ってSpringを適用したWebアプリケーションを作成しようと思うのですが、その前にまずはMavenを使って、Springの適用がない単純なWebアプリケーションを作成しようと思います。
あらかじめSpringが適用された状態のプロジェクトを作成することもできますが、
Springを適用するところから理解するために、あえて素のMavenプロジェクトから始めます。
また、最近はビルドツールにGradleを使って作成することが多くなってきているかと思いますが、
今回はmavenを使います。Gradleはまた次回以降で紹介できればと思います。
前提
eclipse 4.7 Oxygenを使用しています。
また、パースパクティブを「Spring」に切り替えた状態で始めています。
設定されてない方はこちらをご覧ください。
ビルドツールとは?
まず簡単にビルドツールの説明です。
ビルドツールとは、ソースコードをコンパイルしたり、第三者が作ったライブラリを自身のソースコードに取り込んでWebサーバで実行可能なファイルを作成してくれたりします。
Mavenはpom.xmlという定義ファイルに記述することでライブラリを自動で追加してくれたり、ソースを変更すると自動でビルドし直してくたり、とても便利なツールです。
パッケージ・エクスプローラーの表示
画面左に「プロジェクト・エクスプローラー」が表示されている場合は見にくいので、「パッケージ・エクスプローラー」を表示させます。
すでに表示されている場合はこの手順は飛ばしてください。
メニュー→「ビューの表示」→「パッケージ・エクスプローラー」を選択します。
※もし表示されていない場合は「その他」からパッケージ・エクスプローラーを検索してください。
すると画面左のタブに「パッケージ・エクスプローラー」が表示されます。
MavenのWebアプリケーションプロジェクト作成
「パッケージ・エクスプローラー」の余白を右クリック→「新規」→「Mavenプロジェクト」を選択します。
※今回の記事からは外れますが、「Springスターター・プロジェクト」を選択するとSpring Boot、
「Springレガシー・プロジェクト」を選択するとSpringが適用されたプロジェクトが作成されます。
この画面はそのまま「次へ」
アーキタイプの選択画面では、以下を選択します。
グループID:「org.apache.maven.archetypes」
アーティファクトID:「maven-archetype-webapp」
バージョン:「1.0」
パラメータの指定画面で、以下を入力します。
グループID:任意(ルートパッケージなります)
アーティファクトID:任意(プロジェクト名になります)
バージョン:任意(決まったルールがあればそれでいいですが、なければとりあえずデフォルトでいいです)
パッケージ:グループID、アーティファクトIDを入力すると自動で設定されます。
プロジェクトが以下のように作成されます。
「index.jsp」でエラーがでてますが、気にしなくて大丈夫です。
Maven定義ファイル pom.xml編集
Mavenの定義ファイルである「pom.xml」を開くと以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<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.sample</groupId> <artifactId>sampleproject</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>sampleproject 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>sampleproject</finalName> </build> </project> |
「groupId」など先ほど入力した内容もありますが、これがMavenの初期の状態になります。これを以下のように修正し、必要なライブラリを追加していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<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.sample</groupId> <artifactId>sampleproject</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>sampleproject Maven Webapp</name> <url>http://maven.apache.org</url> <!-- ①dependencyManagement追加「Spring IO Platform」 --> <dependencyManagement> <dependencies> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>Cairo-SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- ②dependencies追加「servlet」 --> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>sampleproject</finalName> <!-- ③pluginManagement「maven-compiler-plugin」 --> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </pluginManagement> </build> </project> |
追加したのが、①、②、③の部分です。junitのライブラリは今回の説明では不要なので削除しました。
dependencyManagementタグ
<dependencyManagement>タグは必須ではありません。
ライブラリの追加はこのあと紹介する<dependencies>タグライブラリを追加しますが、<dependencyManagement>タグを使用することでバージョンの定義を省略できます。
Spring IO Platform
上記ではSpring IO Platformを指定しており、これを使うとSpring関連のライブラリはもちろん、Spring以外のポピュラーなライブラリなら互換のとれたバージョンを自動で選択してくれます。
Spring IO Platform自体のバージョンの指定は必須です。
今回は執筆時点で最新のCario-SR1となっています。
バージョン以外にもいくつか要素がありますが、今はこのように書くものなんだと思ってくれればいいです。
dependenciesタグ
<dependencies>タグに追加したいライブラリを定義していきます。
ライブラリ毎に<dependency>タグを用意します。
このタグを記述して保存すると、自動でライブラリをダウンロードしてクラスパスも通してくれます。
Servlet
サーブレットとは、Webサーバ上で動作するJavaプログラムです。
JavaでWebアプリケーションを作成する場合はサーブレットは必須です。
Spring IO Platformのおかげでバージョンを記述してません。
今回の例だとservlet3.1.0が自動でダウンロードされます。
こちらも他にいろいろ要素がありますが、こんなもんなんだと思ってください。
pluginManagementタグ
<build>の中にある要素はコンパイルやjarなどの実行ファイルを出力際の設定です。
maven-compiler-plugin
こちらはコンパイルする際のJavaのバージョンを指定します。
mavenプロジェクトを作成した段階ではJavaのバージョンは1.5になっています。
以下の「JREシステム・ライブラリー」横に表示されているのが初期バージョンです。

デフォルトJavaバージョン
プロジェクトの更新
pom.xmlの編集がmavenの「プロジェクトの更新」を行います。
「パッケージ・エクスプローラー」のプロジェクトを右クリック→「Maven」→「プロジェクトの更新」
すると以下の画面が表示されるので、「OK」を押して更新を行います。

プロジェクトの更新
エラーが消えない場合
プロジェクトの更新をしてもエラーが消えない場合があります。
その場合は以下の手順でプロジェクトのターゲットランタイムにTomcatを追加してください。
対象プロジェクトを右クリック→「プロパティ」→「ターゲット・ランタイム」→「Tomcat8」にチェック→「適用して閉じる」

ターゲット・ランタイム設定
ローカル・サーバーの構築
Webアプリケーションを動かすにはサーバーが必要です。
eclipseにはローカル環境にサーバーを構築してWebアプリを実行できる機能があります。
まずは「サーバー」タブを表示させます。すでにeclipse上に表示されている場合はこの手順は不要です。
「ウィンドウ」→「ビューの表示」→「サーバー」を選択すると、「サーバー」タブが表示されます。
「使用可能なサーバーが…」というリンクをクリックします。

サーバータブ
「新規サーバー」画面が表示されます。
以前の投稿の通りにPleiadesをインストールしている場合は、Tomcat v8.0がすでに入っているので、これを選択します。
「サーバー名」は任意の名前を入力します。他の項目はそのままにします。

新規サーバー
「追加および除去」画面が表示されます。
今回作成したプロジェクトが「使用可能」欄にあるので、選択して「追加」ボタンを押して「構成済み」へ移動します。

追加および除去
これでサーバーの設定は終わりです。
「サーバー」タブを見ると、サーバーが追加されています。

サーバー追加完了
これで準備完了です。動かしてみましょう。
「サーバー」タブの右側にある虫マークをクリックしましょう。
これを押すことでデバッグモードでサーバーが起動します。

デバッグモード起動
起動すると、「コンソール」タブに経過が表示されます。
エラーの表示がなく、最後に「Server startup in …」と表示されていればOKです。

コンソール
ローカルWebサーバーが起動しました。
ブラウザを立ち上げてアクセスしてみましょう。
URLは「http:localhost:8080/プロジェクト名」です。
プロジェクト名の部分は正確にはpom.xmlの「artifactId」タグの値です。
手順通りにやっていればプロジェクト名と同じになっているはずです。

webサイト
上記のURLにアクセスすると、デフォルトで用意されている「index.jsp」にアクセスされるようになってます。
「http:localhost:8080/プロジェクト名/index.jsp」でもアクセスできます。
最後に
プロジェクトを作成して、ローカルサーバーを構築して、ブラウザでページを表示することができました。
冒頭でも言いましたが、今回はSpring Frameworkを適用していない状態です。
pom.xmlでSpring IO Platformを適用しましたが、あくまでバージョン管理のものです。
追加したライブラリはServletのみです。
ということで、次回はSpring Frameworkを使って、MVCモデルでWebアプリケーションを作成していきます!
今回の部分も含め、以下の参考書はとても勉強になります。Springで開発する方にはぜひおすすめです。
また、Springの根底にあるのはJSP、Servletの技術です。
ここを理解しておくと、Springアーキテクチャの理解が深まります。
投稿者プロフィール
.png?resize=96%2C96&ssl=1)
-
「kamaの技術ブログ」を管理しているkorns solution(コルンズソリューション) の鎌形と申します。
フリーランスのSEとして活動中です。
Javaの開発がメインですが、インフラも守備範囲ですので、幅広く投稿していきます!!!
最新の投稿
Java2019.01.22Open JDK (Java 11) をインストールする
WordPress2019.01.07気づいたらブログのアクセス件数が増えてました笑
eclipse(pleiades)2018.06.11【2018年版】Spring MVCを適用したWebアプリケーションの作成①~Maven設定編~
WordPress2018.06.08ブログを始めて3ヵ月くらい経ち…ドメインオーソリティが上がりました!