1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Spring Initializrで作ったプロジェクトがGradleWrapperでのコンパイルに失敗する

Last updated at Posted at 2020-03-22

概要

Spring boot Initializrを使ってプロジェクトを作成後、梱包されているGradle wrapperでそのプロジェクトのコンパイルを試みるも、エラーになりました。
build.gradleに記述を追加することで、解決できたのでその方法を記述します。

Spring boot プロジェクトの作成

依存パッケージの同時ダウンロードや、Spring bootのバージョン、コンパイラを指定して、プロジェクトを作成できる、Spring Initializrを使ってプロジェクトを作成しました。
プロジェクト作成時に以下のパラメータを指定しました。
https://start.spring.io/

  • Project: Gradle Project
  • Language: Java
  • Spring Boot: 2.2.5

プロジェクト作成後、一緒に梱包されたGradle wrapperでコンパイルをすると、以下のコンパイルエラーになりました。

java.lang.NoClassDefFoundError: org/gradle/api/internal/plugins/DefaultConvention
	at org.jetbrains.plugins.gradle.tooling.builder.ProjectExtensionsDataBuilderImpl.buildAll(ProjectExtensionsDataBuilderImpl.groovy:50)
	at org.jetbrains.plugins.gradle.tooling.internal.ExtraModelBuilder.buildAll(ExtraModelBuilder.java:67)
	at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:104)
// 以下省略

いくつかのページを見て、Gradleのバージョンが悪そうだと見当をつけ、Gradle wrapperのバージョンを変更したらコンパイルが成功するのではないかと仮定しました。
https://github.com/gradle/gradle/issues/11769

バージョンを指定してgradle wrapperを作成する

build.gradleに以下を追記します。

build.gradle
// 省略
wrapper {
	gradleVersion = '5.6'
}

一度、Gradle wrapperを削除し、先ほどの記述を追加したbuild.gradleと同じフォルダの階層で、以下コマンドでGradle wrapperを作成しました。


$ gradle wrapper

// 作成後、バージョンを確認します。
$ ./gradlew --version
Downloading https://services.gradle.org/distributions/gradle-5.6-bin.zip
.........................................................................................

Welcome to Gradle 5.6!

Here are the highlights of this release:
 - Incremental Groovy compilation
 - Groovy compile avoidance
 - Test fixtures for Java projects
 - Manage plugin versions via settings script

For more details see https://docs.gradle.org/5.6/release-notes.html


------------------------------------------------------------
Gradle 5.6
------------------------------------------------------------
// 省略

コンパイルに若干時間がかかりますが、終了後、作成されたGradlewを使って,
Spring Initializrで作成したプロジェクトをコンパイルすると、無事にコンパイルできました。

追記

調べていてわかったのですが、build.gradleに記述を追加しなくても、Gradle wrapperのバージョンは変更できそうです。

$ gradle wrapper --gradle-version 5.6

まとめ

Spring Initializrで作成したプロジェクトに梱包されたGradle wrapperで、プロジェクトをコンパイルできない時の解決方法を記述しました。
今回はSpring Initializr起因の問題の解決方法でしたが、
Gradle WrapperのGradleバージョンを変更する時にも、上記のコマンドは利用できると思うので、簡単にまとめておきます。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?