Spring Tool Suiteを用いてgradleでwarを作成する方法

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を利用した開発効率アップ

Gradleを利用した開発効率アップ

Qiita:Spring Boot解説第4回(開発環境編:warファイル作成)

https://qiita.com/TEBASAKI/items/7a22c8b6ac6eb5f1c304

Tomcat インストール (Windows編)

https://programming-style.com/tomcat/reference/install-win/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です