Как развернуть приложение Java Gradle на Heroku
Пожалуйста, помогите развернуть мое приложение на Heroku. Получение сообщения об ошибке от Heroku *
"Ошибка приложения. В приложении произошла ошибка, и ваша страница не может быть обработана. Повторите попытку через несколько минут. Если вы являетесь владельцем приложения, проверьте подробности в своих журналах".
Вот лог от Heroku:
2016-07-21T22:11:30.966800+00:00 heroku[slug-compiler]: Slug compilation
started 2016-07-21T22:11:30.773385+00:00 heroku[api]: Release v8 created by
zzheads@gmail.com 2016-07-21T22:11:56.184847+00:00 heroku[router]: at=error
code=H14 desc="No web processes running" method=GET path="/favicon.ico"
host=zzheads-countries.herokuapp.com request_id=a03c9276-b038-4f9f-8e6d-
5f29f14b441 fwd="5.3.141.153" dyno= connect= service= status=503 bytes=
Мой файл сборки Gradle:
group 'com.zzheads'
version '1.0-SNAPSHOT'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE'
}
}
apply plugin: 'java'
apply plugin: 'spring-boot'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}
task stage {
dependsOn build
}
И мой файл Proc:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/countries-1.0-SNAPSHOT.jar
2 ответа
Ваша сборка, вероятно, генерирует исполняемый файл JAR в каталоге build/libs
, Попробуйте это в вашем Procfile
:
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/countries-1.0-SNAPSHOT.jar
Вы можете проверить это локально, запустив:
$ ./gradlew stage
$ heroku local
Я думаю, что Heroku не может найти ваш .jar
потому что когда он не находит свойства версии, пакет сборки gradle просто использует свой собственный идентификатор сборки. Так что ваши .jar
не найден под именем файла в вашем procfile. Вы можете установить следующее:
jar{
baseName = 'countries-'
version = '1.0-SNAPSHOT'
}
поэтому Heroku подхватывает эти переменные. Обратите внимание, что если вы используете Spring Boot 2.*, плагин отключает jar
задачи, и добавляет bootJar
задача, на которой вы должны установить эти переменные.
При этом платформа сможет найти ваш артефакт просто отлично.
Кроме того, работает heroku logs -a <your-app-name-here> -t
вы получите больше информации о состоянии вашего приложения во время отладки