ごっそログ

勉強したことなどを書いていきます

Nuxt 3+Spring BootでREST API #4 マルチプロジェクト構成にする

目次

  • Gradleのインストール
  • プロジェクト構成
  • ルートプロジェクトの作成
  • ルートプロジェクトの作成
  • Gradle Wrapperの導入 & ビルド

Gradleのインストール

Gradleコマンドを使えるようにする。Gradle Releasesにアクセス。
Downloadからcompleteを選択してダウンロード。

zipファイルを解凍して任意のパスに配置する。
以下の環境変数を登録する。

  • GRADLE_HOME
    • 値: gradleのパス
  • PATH
    • 値: %GRADLE_HOME%\bin

gradle -v でパスが通っているか確認する。

プロジェクト構成

現状APIのプロジェクトを作成しただけなので、ルートディレクトリを切って、API、フロント、マイグレーションなどの単位で分割されたマルチプロジェクト構成にしていく。
構成は以下のようなイメージ。

.(root)
├─ api (APIサーバのプロジェクト)
├─ common (共通ライブラリ)
├─ iac (IaCのプロジェクト)
├─ migrate (マイグレーション用のプロジェクト)
├─ repository (DAOなどDBアクセス用のプロジェクト)
├─ ui (フロントのプロジェクト)
├─ build.gradle
└─ setting.gradle

ルートプロジェクトの作成

gradle init を実行。

ルートパスに作成されたsettings.gradleを編集する。

/*
 * This file was generated by the Gradle 'init' task.
 *
 * The settings file is used to specify which projects to include in your build.
 *
 * Detailed information about configuring a multi-project build in Gradle can be found
 * in the user manual at https://docs.gradle.org/6.9.3/userguide/multi_project_builds.html
 */

rootProject.name = 'rest-api-sample'
include 'api', 'common', 'repository'

これでapi, common, repository がサブプロジェクトとして認識されるようになる。

Gradle Wrapperの導入 & ビルド

Gradleの実行環境がなくても (gradleコマンドなしで) ビルドできるようにするために、Gradle Wrapper を導入する。
gradle wrapper を実行。
ここでビルドが通らず FAILURE: Build failed with an exception. と怒られ、以下のエラーが出た。

* What went wrong:
Could not compile settings file 'C:\work\repos\*******\rest-api-sample\settings.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 61

ひとまずgradle wrapper周りのライブラリは追加されたので、ビルドできない原因を突き止める。
エラー内容でググったところ、Gradle 6系だとJava16以降のバージョンをサポートしていないようなので、gradle-wrapper.properties を以下のように修正した。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip

再度build実行したところ、無事成功。

参考

Gradleでマルチプロジェクトを作成する

Windows10にGradleをインストール - Qiita

GradleでJavaのマルチプロジェクト作成 - Qiita

Gradle Wrapper スクリプト (gradlew) を作成する - まくまくGradleノート

【Spring】General error during conversion: Unsupported class file major version 61の対応 - Tech Hotoke Blog