質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.54%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

2015閲覧

Spring Boot(Gradle)のプロジェクトをHerokuにデプロイすると"failed to compile Gradle Wrapper app"というエラーが出る

mk-9433

総合スコア3

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/06/17 04:50

編集2021/06/20 05:05

SpringframeworkとGradleを使ってローカルで動作確認したwebアプリを
herokuでデプロイしようとしています。

コマンドプロンプトで

$ git add .
$ git commit -m "first commit."
$ heroku login
$ heroku create
$ git push heroku master

を実行すると以下のようなエラーが表示されます。
(Gradle Wrapper app のコンパイルに失敗し、pushが拒否されました)

原因はbuild.gradleファイルにあるかと思い、
色々と調べながら修正していますがなかなか解決できません。
またGitやコマンドプロンプトの操作もあやしく、
javaやgradleのバージョンの確認もネットで調べて行いましたが
あまり自信がありません。。

知識ゼロから参考書やインターネットで調べながらjavaを独学し
練習用に作成したアプリケーションです。
公開する作業まで完了させてみたく、
比較的簡単にデプロイできると言われていたherokuでチャレンジしています。

かなり理解が浅く、ネットで調べたコードを切り貼りしたような状態で
専門の方にはお見苦しいものかと思いますが、どうかアドバイス頂けますと幸いです。

teratailにて初めて質問させていただきます。
不足している情報がありましたら追加しますので
ご指摘の程よろしくお願いいたします。

発生している問題・エラーメッセージ(コマンドプロンプト上)

C:\sts\workspace-spring-tool-suite-4-4.9.0.RELEASE\appName>git push heroku master

Enumerating objects: 485, done.
Counting objects: 100% (485/485), done.
Delta compression using up to 8 threads
Compressing objects: 100% (422/422), done.
Writing objects: 100% (485/485), 114.43 MiB | 554.00 KiB/s, done.
Total 485 (delta 192), reused 0 (delta 0), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-20 stack
remote: -----> Using buildpack: https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git
remote: -----> Gradle Wrapper app detected
remote:
remote: gzip: stdin: not in gzip format
remote: tar: Child returned status 1
remote: tar: Error is not recoverable: exiting now
remote: ! Push rejected, failed to compile Gradle Wrapper app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to frozen-reef-95901.
remote:
To https://git.heroku.com/frozen-reef-95901.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/frozen-reef-95901.git'

該当のソースコード

build.gradle

buildscript { repositories { mavenCentral() } dependencies { classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE' } } plugins { id 'org.springframework.boot' version '2.3.5.RELEASE' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' id 'eclipse' id 'idea' } jar { baseName = 'spring-boot-sample' version = '0.1.0' } repositories { mavenCentral() } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = 11 //apply plugin: 'war' sourceCompatibility = '1.8' targetCompatibility = '1.8' compileJava.options.encoding = "UTF-8" configurations { provided } sourceSets { main { compileClasspath += configurations.provided } } dependencies { // Spring implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-aop' developmentOnly 'org.springframework.boot:spring-boot-devtools' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // H2 Database runtimeOnly 'com.h2database:h2' // for lombok provided 'org.projectlombok:lombok' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok:1.18.12' //テスト関係 testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2' // JUnit 5を使うための依存性 testCompile("org.junit.jupiter:junit-jupiter-api") testRuntime("org.junit.jupiter:junit-jupiter-engine") // Mockitoのライブラリが含まれている testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } testImplementation('org.mockito:mockito-core') testImplementation('org.mockito:mockito-junit-jupiter') } test { useJUnitPlatform() } task stage(dependsOn: ['build', 'clean']) build.mustRunAfter clean wrapper { gradleVersion = '6.7' //distributionUrl = distributionUrl.replace("bin", "all") }

Procfile

web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/PetNote-0.0.1-SNAPSHOT.jar

system.properties

java.runtime.version=15

.gitignore(プロジェクトフォルダ直下)

HELP.md .gradle build/ !gradle/wrapper/gradle-wrapper.jar !**/src/main/** !**/src/test/** /bin ### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans .sts4-cache ### IntelliJ IDEA ### .idea *.iws *.iml *.ipr out/ ### NetBeans ### /nbproject/private/ /nbbuild/ /dist/ /nbdist/ /.nb-gradle/ ### VS Code ### .vscode/ .DS_Store

試したこと

https://qiita.com/dumbbell/items/c7e5162557a1a299b44b
https://qiita.com/gosshys/items/fa02b390b60ee3001dae
⇒主にこれらの記事を参考に作業を進めました。

  • エラーメッセージにありますGradle Wrapperについて調べまして、

以下の必要とされるファイルがあることは確認しました。

プロジェクトフォルダ直下 > gradle > wrapper > gradle-wraper.jar
プロジェクトフォルダ直下 > gradle > wrapper > gradle-wraper.properties

  • heroku公式サイトにあります「Heroku スターターガイド (Gradle)」の手順に

沿ったサンプルアプリは問題なくデプロイできました。
https://devcenter.heroku.com/ja/articles/getting-started-with-gradle-on-heroku

バージョン

  • Windows 10

  • Spring Tool Suite 4  Version: 4.9.0.RELEASE

  • java.runtime.version=15

※STSのWindow > Preference > Java > Installed JREs のファイルパスにある以下のフォルダ名から、
「バージョンは15」と読み取りました。

org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.1.v20201027-0507

  • gradleVersion = '6.7'

※コマンドプロンプトで「gradlew -v」と実行した際に出てきたバージョンです。

【追記】追加で試したこと

頂いたアドバイスをもとに、

① ターミナルからコマンドで heroku 側の設定を修正

heroku config:unset BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git heroku buildpacks:add https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git heroku buildpacks:remove heroku/gradle

② herokuへのデプロイを実行すると、以下のようなエラーメッセージが表示されました

C:\sts\workspace-spring-tool-suite-4-4.9.0.RELEASE\PetNote>git push heroku master Enumerating objects: 493, done. //~~ 省略 ~~// remote: remote: * What went wrong: remote: Could not determine the dependencies of task ':stage'. remote: > Task with path 'installApp' not found in root project 'PetNote'. remote: remote: * Try: remote: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. remote: remote: * Get more help at https://help.gradle.org remote: remote: Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. remote: Use '--warning-mode all' to show the individual deprecation warnings. remote: See https://docs.gradle.org/6.7/userguide/command_line_interface.html#sec:command_line_warnings remote: remote: BUILD FAILED in 20s remote: remote: ! ERROR: Failed to run Gradle! remote: We're sorry this build is failing. If you can't find the issue in application remote: code, please submit a ticket so we can help: https://help.heroku.com remote: You can also try reverting to the previous version of the buildpack by running: remote: $ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-gradle#previous-version remote: remote: Thanks, remote: Heroku remote: //~~ 省略 ~~//

③ 「Could not determine the dependencies of task ':stage'.」のエラーメッセージについて調べ、以下の記事を参考に、ターミナルからHerokuへの設定を追加しました。
https://stackoverflow.com/questions/38661195/grails-3-and-heroku-stage-task-not-found

heroku config:set GRADLE_TASK="build"

④ 再度Herokuへのデプロイを実行すると、以下のエラーが発生

heroku config:set GRADLE_TASK="build" C:\sts\workspace-spring-tool-suite-4-4.9.0.RELEASE\PetNote>git push heroku master //~~ 省略 ~~// remote: remote: Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. remote: Use '--warning-mode all' to show the individual deprecation warnings. remote: See https://docs.gradle.org/6.7/userguide/command_line_interface.html#sec:command_line_warnings remote: remote: BUILD SUCCESSFUL in 1m 31s remote: 6 actionable tasks: 6 executed remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: ! Compiled slug size: 817.2M is too large (max is 500M). remote: ! See: http://devcenter.heroku.com/articles/slug-size remote: remote: ! Push failed remote: ! //~~ 省略 ~~//

⑤ 「Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.」エラーメッセージについて調べたところ、gradleで詳細のエラーメッセージを確認する必要があるとのことだったので、以下のコマンドで詳細のエラー内容を確認しました。

参考記事 : https://blog.dameninngenn.com/entry/2018/06/05/173914

gradlew build -Dorg.gradle.warning.mode=all

そのエラー内容と以下の記事を参考に、Gradle 7.0で使えない、build.gradle の中の非推奨な表記を修正しました。

参考記事 : https://ksby.hatenablog.com/entry/2019/12/31/085808

修正前 → 修正後

baseName → archiveBaseName
version → archiveVersion
testCompile → testImplementation
testRuntime → testRuntimeOnly

⑥ デプロイすると、④番と同じエラーが発生してしまいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiino

2021/06/19 01:48

.gitignore ファイルの中身を見せてもらえますでしょうか。 github のレポジトリを見せていただけると助かるのですが、可能でしょうか。
mk-9433

2021/06/19 15:13 編集

Keyno様、修正依頼ありがとうございます! .gitignoreの中身を、本文に追加しました。 githubのレポジトリとは、こちらで合っておりますでしょうか? https://github.com/mk-9433/PetNote.git
kiino

2021/06/19 15:15

修正ありがとうございます。 githubのレポジトリ はそちらで間違いありません。 wrapper のコミットもれの際のメッセージに近かったので、そこを確認したかったのですが、 ちゃんとコミットされますね。。。 回答に記載してしまったのですが、gitignore を読み間違ったので無視してください。 混乱を招いて申し訳ございません。 回答も削除依頼だしました(こういう内容で削除していただけるのかわからないのですが)
kiino

2021/06/19 16:26

原因わかったので回答の方を修正しました。
guest

回答2

0

  • 追記⑥で同じエラーがでたのは、⑤番でbuild.gradleを修正したので、「Git add」からやり直さないといけなかったことが原因でした。

以下のコマンドでもう一度デプロイすると、「Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.」のエラーは解消されました。

$ git add .
$ git commit -m "first commit."
$ git push heroku master

  • 「Compiled slug size: 817.2M is too large (max is 500M)」のエラーは、純粋なサイズの問題のようだったので、テストでアップロードしまくった画像を \src\main\resources\static から削除してサイズダウンしたら解消されました。

投稿2021/06/20 04:56

編集2021/06/20 05:17
mk-9433

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Heroku にデプロイするには gradle-wrapper も git レポジトリに追加が必要です。

STSを使われていると思うのですが、STSがプロジェクトを生成した際に自動で生成する
.gitignore ファイルは ​gradle/wrapper/gradle-wrapper.jar をコミットしないせっていになっているようです。

以下の対応をして、再度Pushすればでデプロイできるかと思われます。
- ​gradle/wrappe をgit レポジトリに追加する
- .gitignore からも wrapper の部分を削除する

Heroku での Gradle アプリのデプロイ

radlew​ を使用している場合、​gradle/wrapper/gradle-wrapper.jar​ および ​gradle/wrapper/gradle-wrapper.properties​ ファイルも Git リポジトリに追加する必要があります。

修正

すいません、根本的な原因は別の場所にありました。

参考にされたという、以下の記事で build pack URL を設定していますが、これが原因です。
https://qiita.com/gosshys/items/fa02b390b60ee3001dae

質問者様の質問文に以下のような表示があると思いますが、このテンプレートが8年前作でどうも古いバグとかを踏んでそうな予感がしています

remote: -----> Building on the Heroku-20 stack remote: -----> Using buildpack: https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git

gradle SpringBoot であれば、デフォルトの buildpack でも動作するので、
以下のようにターミナルからコマンドで heroku 側の設定を修正し、再度デプロイすれば直りそうです。

heroku config:unset BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git heroku buildpacks:add heroku/gradle heroku buildpacks:remove https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git

投稿2021/06/19 15:13

編集2021/06/19 16:31
kiino

総合スコア539

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mk-9433

2021/06/19 15:35

早速ご回答いただきありがとうございます。 ローカルにファイルが存在してもignoreされてしまっていたのですね…! 今試してみましたが少しGitの操作で苦戦しています。 しっかり取り組んでまた結果報告させていただきます!
kiino

2021/06/19 16:22

すいません、回答を間違えていました。 後ほど修正しますが、原因がわかって再現取れたので補足します。 以下のサイトで build pack URL を設定していますが、これが原因です。 https://qiita.com/gosshys/items/fa02b390b60ee3001dae 質問者様の質問文に以下のような表示があると思いますが、このテンプレートが8年前作でどうも古いバグとかを踏んでそうな予感がしています remote: -----> Building on the Heroku-20 stack remote: -----> Using buildpack: https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git gradle SpringBoot であれば、デフォルトの buildpack でも動作するので、 以下のように修正して再度デプロイしてください。 heroku config:unset BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git heroku buildpacks:add https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git heroku buildpacks:remove heroku/gradle
mk-9433

2021/06/20 05:18 編集

とても丁寧に回答頂いて、ありがとうございます! 記事の作成時期と共に、追加するテンプレートの作成時期も 確認が必要ですね。 頂いた回答をもとに色々と試してみたのですが、 違ったエラーが発生してしまいました。 Keyno様の環境と違っているのでしょうか… 回答が長くなってしまったので、 質問本文の末尾に【追記】として追加させていただきました。 自分でももう少し色々と試してまたご報告いたします!
mk-9433

2021/06/20 04:53

で、デプロイできました…! 追記の⑤番で、build.gradleを修正したので、「Git add」からやり直さないといけなかったことが原因でした。 以下のコマンドでもう一度デプロイすると、「Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.」のエラーは解消されました。 > $ git add . > $ git commit -m "first commit." > $ git push heroku master 「Compiled slug size: 817.2M is too large (max is 500M)」のエラーは、テストでアップロードしまくった画像をプロジェクトフォルダから削除してサイズダウンしたら解消されました。 色々と教えて下さって、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.54%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。