Spring Tool Suiteを用いてgradleでwarを作成する方法をご紹介します。
目次
条件
- Spring Tool Suite 4
- Spring Boot 2.5.0
- gradle
前提
以下のようなSpringプロジェクトを作成します。
依存関係は「Spring Web」のみを選択しています。
TestControllerクラスを作成し、以下のように記述します。
TestController.java
package com.example; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping(path = "/test") public String getTest(HttpServletRequest request) { return "Hello World!"; } }
動作確認
プロジェクトを右クリック > 実行 > Spring Bootアプリケーションを選択します。
アプリケーションが実行されたのを確認し、ブラウザで以下のURLを開きます。
http://localhost:8080/test
以下のように表示されればOKです。
warの作成
ソースの編集
main関数のあるクラスに、以下を記述します。
- クラスに「extends SpringBootServletInitializer」を追加。
- @Overrideでconfigureメソッドを追加。
以下のような記述となりました。
Test1Application.java
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class Test1Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Test1Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Test1Application.class); } }
build.gradleの編集
build.gradleに以下を追記します。
- apply plugin: ‘war’
- providedRuntime(“org.springframework.boot:spring-boot-starter-tomcat”)
また、warの名称を指定するために以下も追記します。
- war {archiveName ‘test1.war’}
今回は以下のようになりました。
build.gradle
plugins { id 'org.springframework.boot' version '2.5.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } apply plugin: 'war' war { archiveName 'test1.war' } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' providedRuntime("org.springframework.boot:spring-boot-starter-tomcat") } test { useJUnitPlatform() }
warの作成実行
プロジェクトを右クリック > 実行 > 実行の構成 を選択します。
左側メニュー一覧で、「Gradleタスクを」ダブルクリックして、「新規作成」が作成されることを確認します。
作業ディレクトリーにおいて、ワークスペースボタンを押して対象プロジェクトを選択します。
Gradleタスクにおいて、追加ボタンを押して、「war」と入力します。
適用⇒実行ボタンを押します。
Gradleの処理が実行され、warファイルが作成されます。
作成されたwarファイルは、以下のディレクトリにあります。
プロジェクト/build/libs
ちなみに、以下の手順でエクスプローラーでプロジェクトの場所を開けます。
プロジェクトを右クリック > プロパティ
ロケーションのパス右横の⇒マークをクリック。
ローカルPC上でのwar実行確認
tomcatのダウンロード
以下のサイトから、自分のPCに合ったTomcatをダウンロードします。
https://tomcat.apache.org/download-90.cgi
今回は、64-bit Windows zipを選択しました。
tomcatのインストール
ダウンロードしたzipを任意の場所に解凍します。
環境変数の追加
環境変数に以下を追加します。
(今回は、ユーザー環境変数に追加しました。)
- 環境変数名:CATALINA_HOME
- 値:Tomcatのパス
tomcatの起動/停止
コマンドプロンプトを用いて、以下のパスで対象コマンドを実行することで、起動/停止を行うことが出来ます。
tomcatのパス/bin
- 起動:startup.bat
- 停止:shutdown.bat
warの配置&実行
作成したwarファイルを、以下のディレクトリに配置します。
- tomcatのパス/webapps
tomcatを起動すると、warファイルが展開されます。
ブラウザで確認します。
ポイント
- localhost:8080/{warファイル名}/* を指定します。
正しく実行されていることがわかります。
参考
Gradleを利用した開発効率アップ
Qiita:Spring Boot解説第4回(開発環境編:warファイル作成)
https://qiita.com/TEBASAKI/items/7a22c8b6ac6eb5f1c304