Java
Heroku
spring-boot

herokuでspring-bootをgradleを使ってデプロイするときのコツ

More than 3 years have passed since last update.


herokuとspring-boot

herokuにspring-bootをデプロイするときのProcfileの指定の仕方がいろいろあるようだが、しっくり来るのがあったのでメモ。

また、mavenではなくgradleを使ってデプロイする。


gradleの準備

gradleは、gvmというパッケージ管理を使って、インストールする。

詳細は、こちら。

MacでGradleのインストールについて+GVMのコマンドなど使い方まとめ


build.gradleファイルの準備

プロジェクト直下に(mavenでいうところのpom.xmlと同じ場所)build.gradleファイルを配置


gradle

buildscript {

repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
}
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
baseName = 'spring-boot-sample'
version = '0.1.0'
}

repositories {
mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
// tag::jetty[]
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
// end::jetty[]
// tag::actuator[]
compile("org.springframework.boot:spring-boot-starter-actuator")
// end::actuator[]
testCompile("junit:junit")
}

defaultTasks "clean", "build"

task wrapper(type: Wrapper) {
gradleVersion = '2.4'
}



gradle wrapperでgradlewファイルを生成

この手順がわからずgradle使えないと思ってしまっていた。

gradle wrapper


  • プロジェクト直下にgradlewファイルが生成される。(gradlew.batはWindowds用らしい)

  • プロジェクト配下にgradleディレクトリが生成され、中にgradle-wrapper.jarが生成される。

image


gradlewから起動してみる

./gradlew build && java -jar build/libs/spring-boot-sample-0.1.0.jar

※ここで起動できないとあとに進まない


ここから先は、以下のページを参考にした。

GradleでビルドしたSpring BootアプリをHerokuで動かす


Procfileを修正


Procfile

web: java -jar build/libs/spring-boot-sample-0.1.0.jar --server.port=$PORT



foremanで起動してみる

foreman start web

※起動できるはず。起動できない場合は、ちゃんとjarファイルがあるか確認する。jarファイルの名前が間違っていないか?jarファイルがない場合は、gradlew buildを実行してみる。


.gitignoreに余計なファイルがコミットされないように設定を加える

.idea

/build/
/.gradle/
spring-boot-sample.iml

gradleディレクトリは、必要だが、.gradleは不要。buildも不要。


herokuのカスタムbulidpackの設定

heroku-buildpack-gradlew

READMEを見てみるとちょっと手順が違うようだが、動くので問題ないと思っています。

heroku config:set BUILDPACK_URL=https://github.com/marcoVermeulen/heroku-buildpack-gradlew.git


gitにコミットして、herokuにpush

git push heroku master

herokuのログを確認。エラーがないこと。

heroku logs

起動を確認する

heroku open

動かくはず。