2015-09-09 2 views
3

Я пытаюсь развернуть мое приложение Java Spring Boot Web для Heroku.Веб-приложение Java на Heroku: невозможно получить доступ к jarfile

Чтобы запустить его локально я бегу:

mvn install

, а затем

java $JAVA_OPTS -jar target/*.war

Так Heroku я создал в PROCFILE: web: java $JAVA_OPTS -jar target/*.war

Я использую Heroku Интеграция Github и приложение развертываются в Heroku от Гитуба. Поэтому я просто подталкиваю его туда.

Но приложение не запускается.

heroku logs --app myapp дает мне:

2015-09-09T21:53:25.581128+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -jar target/*.war` 
2015-09-09T21:53:27.110820+00:00 app[web.1]: Error: Unable to access jarfile target/*.war` 

heroku run bash --app myapp с ls -a не показывает target каталог.

Я думаю, что Heroku не создает приложение. Но что я делаю неправильно? Заранее благодарю вас за советы!

+1

Когда вы говорите: «Приложение развернуто в Хероку из Гитуба, поэтому я просто нажимаю его» означает ли это, что вы используете [Интеграцию Героку Гитхуба] (https://devcenter.heroku.com/articles/github-integration) ? Вы можете проверить свою [Heroku Dashboard] (http://dashboard.heroku.com), чтобы подтвердить, что развертывание прошло успешно? – codefinger

+0

@codefinger Спасибо за ваш комментарий, журнал построения был в правильном направлении. – Nailgun

ответ

3

Я нашел причину ошибки. Вот часть из журнала сборки:

-----> Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used. 
     Detected buildpacks: Node.js, Java 
     See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order 
-----> Node.js app detected 
-----> Creating runtime environment 

Согласно Heroku build order заявка рассматривалась как NodeJS один. Таким образом, решение заключалось в том, чтобы установить сборку java:

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-java 

А затем нажмите любое изменение в приложении, чтобы оно было перестроено.

5

Вместо mvn install сделать mvn package знать разницу чек http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

Развертывание WAR-файл с плагином Maven Heroku позволяет интегрировать процесс развертывания с помощью существующего процесса Maven. Плагин Героку использует артефакты, генерируемые вашей фазой пакета mvn, и создает их в файл Slug, который загружается на сервер Heroku .

Таким образом, плагин Heroku Maven позволяет избежать накладных расходов , перекомпилируя ваш проект удаленно. Часто это предпочтительный подход при развертывании с CI-сервера, который, возможно, уже создал файл вашей WAR-версии и протестировал его.

Источник: https://devcenter.heroku.com/articles/war-deployment#deployment-with-the-heroku-maven-plugin

Что касается развертывания Spring бутсу, есть некоторые шаги, которые необходимо предпринять:

  • Настройка порта

    web: java -Dserver.port=$PORT -jar target/demo-0.0.1-SNAPSHOT.jar

  • Укажите JDK, по умолчанию 1.8 (Нет необходимости изменять, если 1.8 указана в Maven)

Проверить http://docs.spring.io/spring-boot/docs/current/reference/html/cloud-deployment-heroku.html

Для выполнения PROCFILE использовать heroku local

+0

Спасибо за ваш ответ. Я знаю о плагине Maven Heroku, но я хочу использовать Heroku через интеграцию Github. Также я считаю, что maven 'install' step вызывается после' package', и результат (встроенный файл войны) тот же, что и не имеет значения. – Nailgun

Смежные вопросы