Загрузка Spring выполняется нормально, но развертывание Heroku завершается неудачно

#java #git #spring-boot #maven #heroku

#java #git #spring-boot #maven #heroku

Вопрос:

Я тщательно изучил это и не нашел полезного ответа. Я пытаюсь развернуть этот API с помощью Heroku. Это уже существующий репозиторий GitHub, я следовал рекомендациям Heroku devcenter. Я попытался выполнить развертывание с помощью Git и плагина Heroku Maven, и результат тот же: я могу создать его локально, и все в порядке, но когда я подключаюсь к cd ~/workspace/API/myapi/ и пытаюсь передать его в Heroku git push heroku main:main , я получаю:

 Enumerating objects: 237, done.
Counting objects: 100% (237/237), done.
Delta compression using up to 4 threads
Compressing objects: 100% (179/179), done.
Writing objects: 100% (237/237), 91.06 KiB | 4.14 MiB/s, done.
Total 237 (delta 61), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Java app detected
remote: -----> Installing JDK 11... done
remote: -----> Executing Maven
remote:        $ ./mvnw -DskipTests clean dependency:list install
remote: ./mvnw: 219: ./mvnw: cannot open /tmp/build_f4dfb6d1/API/myapi/.mvn/wrapper/maven-wrapper.properties: No such file
remote: /tmp/build_f4dfb6d1/API/myapi/.mvn/wrapper/maven-wrapper.jar: No such file or directory
remote: Error: Could not find or load main class org.apache.maven.wrapper.MavenWrapperMain
remote: Caused by: java.lang.ClassNotFoundException: org.apache.maven.wrapper.MavenWrapperMain
remote: 
remote:  !     ERROR: Failed to build app with Maven
remote:        We're sorry this build is failing! If you can't find the issue in application code,
remote:        please submit a ticket so we can help: https://help.heroku.com/
remote: 
remote:  !     Push rejected, failed to compile Java app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !       Push rejected to myapiheroku.
remote: 
To https://git.heroku.com/cashonlineheroku.git
 ! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/myapiheroku.git'
 
  • /home/myuser/workspace/API/myapi/.mvn/wrapper/ содержит файлы
    maven-wrapper.jar , maven-wrapper.properties и
    MavenWrapperDownloader.java .
  • /home/myuser/workspace/API/myapi/system.properties указывает
    java.runtime.version=11 .
  • /home/myuser/.m2/repository/ar/com/api/myapi/ содержит
    myapi.0.0.1-SNAPSHOT.jar .
  • Вы можете найти pom.xml , application.properties , и т.д. в репозитории, указанном выше.

Чего мне не хватает? Дайте мне знать, если вам нужна дополнительная информация. Заранее спасибо!

Комментарии:

1. Вывод показывает, что Heroku считает, что вы используете оболочку Maven для своего проекта. У вас есть mvnw файл в вашем проекте? Является ли оно исполняемым?

2. В /home/myuser/workspace/API/myapi/ есть два таких файла: mvnw и mvnw.cmd

Ответ №1:

Похоже, что у вас есть mvnw файл в корне каталога вашего проекта, но отсутствуют другие файлы, требуемые оболочкой Maven. Обычно они находятся в .mvn/wrapper каталоге вашего приложения. Возможно, вы их удалили.

У вас есть два варианта:

  1. Также удалите другие файлы для оболочки Maven: mvnw и mvnw.cmd
  2. Переустановите недостающие файлы для оболочки Maven: mvn -N io.takari:maven:0.7.7:wrapper

Я бы выбрал вариант 2. Обычно предпочтительнее использовать оболочку, чтобы убедиться, что ваш проект выполняется с ожидаемой версией Maven.

Комментарии:

1. Вариант 2 сработал как шарм! большое вам спасибо.