0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人学習】boot_basic_build.gradleを読んでビルド構成とJSP依存関係を理解した

0
Posted at

対象ファイル

  • build.gradle

はじめに

前回は環境設定ファイルである application.properties を読んだ。
今回はプロジェクトのビルド構成や依存関係(Dependencies)を管理する build.gradle を追っていく。

Java 17 環境をベースに、Spring Boot Web アプリケーションの実行環境や、JSP をレンダリングするために必要な tomcat-embed-jasper モジュールがどのように組み込まれているかを整理してみた。


build.gradle(ビルド設定ファイル)

プラグイン、JDK バージョン、リポジトリ、外部ライブラリを定義する設定ファイルだ。

plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
useJUnitPlatform()
}

ビルドと依存関係の処理フロー(Build & Dependency Flow)

  1. プラグインのロードと環境初期化
    Spring Boot プラグインおよび Dependency Management プラグインをロードし、mavenCentral() リポジトリからライブラリを自動取得する準備を行う。
  2. Java 17 ツールチェーンの設定
    JavaLanguageVersion.of(17) を通じて、ローカル環境の Java バージョンと一貫性を維持する JDK 17 実行環境を構成する。
  3. Web および JSP モジュールの依存関係解決
    Web アプリ構築用の spring-boot-starter-web と、JSP ファイルのコンパイルに必要な tomcat-embed-jasper を準備する。
  4. 開発利便性およびテスト環境の準備
    コード変更時の自動再起動をサポートする spring-boot-devtools と、JUnit Platform ベースのテスト環境を構成する。

気になった部分・改善ポイント

設定内容を読んでいて、いくつか改善できそうなポイントが気になった。

1. JSP 依存関係(tomcat-embed-jasper)のスコープ設定

// 変更前:全環境(本番含む)でビルドに含まれる設定
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'

// 改善案:JSP は開発・サーブレットコンパイル用として限定する
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'

Spring Boot のデフォルト Web スターターには JSP エンジンが含まれていないため tomcat-embed-jasper が必要だが、本番環境で Executable WAR/JAR として配備する際は providedRuntime を使うことで、内蔵サーバーとの競合を避けてビルドサイズも最適化できる。

2. DevTools のキャッシュ無効化設定

devtools を導入していても、JSP や静的リソースのキャッシュが効いていると変更が即座に反映されない場合がある。

// 改善案:application.properties にキャッシュオフの設定を追加する
spring.devtools.restart.enabled=true
spring.thymeleaf.cache=false
server.servlet.jsp.init-parameters.development=true

ビルド設定だけでなく、プロパティ設定と合わせて運用することでホットリロードの利便性がさらに向上する。

3. Gradle のバージョン管理と記述の一貫性

plugins ブロックでバージョンを直接記述しているが、将来的にマルチプロジェクト化したりライブラリが増えた際に管理が煩雑になる可能性がある。

// 改善案:libs.versions.toml(Version Catalogs)を活用した統一管理
// gradle/libs.versions.toml でバージョンを一元管理する設計へ移行する


構成要素のまとめ

ブロック / 設定項目 設定値および内容 役割および動作説明
plugins org.springframework.boot Spring Boot のビルドタスクおよびバージョン自動管理機能を適用
java.toolchain JavaLanguageVersion.of(17) プロジェクトで使用する JDK バージョンを 17 に固定
repositories mavenCentral() ライブラリを自動ダウンロードする中央リポジトリを指定
implementation spring-boot-starter-web Spring MVC や 内蔵 Tomcat などの Web 核心モジュールを一括追加
implementation tomcat-embed-jasper JSP テンプレートをコンパイルしてサーブレットへ変換する JSP エンジン
developmentOnly spring-boot-devtools コード変更時のホットリロード機能を提供
testImplementation spring-boot-starter-test Controller や Web 層のテスト用ライブラリを提供

今回学んだこと

  • Spring Boot で JSP を使うには tomcat-embed-jasper の明示的な追加が必須であること
  • providedRuntime を活用することで、開発環境と本番環境のビルド最適化が図れること
  • Java Toolchain や DevTools を組み合わせることで、開発効率と環境の一貫性を高められること

次は実際の JSP 画面ファイルや静的リソース構造の確認に進んでいきたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?