Рассмотрим еще один способ деплоя приложения с Gradle на Heroku
В процессе деплоя heroku с помощью gradle будет запускать задачу stage
, которую необходимо создать. В простейшем случае задача stage
должна выполнять установку приложения (задачу install), но без запуска тестов — это можно сделать вызвав задачу installDist
. Задача installDist
подготовит исполняемый файл приложения. Добавим задачу stage
с нужной логикой:
// Фрагмент файла build.gradle
task stage(dependsOn: ['clean', 'installDist'])
installDist.mustRunAfter clean
После успешной компиляции и сборки проекта на heroku, приложение нужно запустить. Это можно сделать если указать heroku команду, которую нужно выполнить. Команда указывается в специальном файле Procfile. Добавим команду запуска исполняемого файла:
// Содержимое файла Procfile
// Указываем путь до исполняемого файла
// Путь зависит от имени проекта и в вашем случае может отличаться
// Выполните задачу installDist и найдите этот файл
web: sh build/install/deploy/bin/deploy
В процессе деплоя heroku автоматически определит, что используется проект gradle. Но для корректной работы, heroku необходимо использовать нужные версии gradle и java. Иначе будут использоваться версии по умолчанию, которые морально устарели, и с большой долей вероятности деплой завершится с ошибкой.
Зафиксировать нужную версию gradle можно с помощью так называемого Wrapper (локальной для проекта копии Gradle). Для этого выполните в директории проекта команду:
gradle wrapper --gradle-version 7.4
Указать целевую версию java можно с помощью конфигурации в файле system.properties:
java.runtime.version=17
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
@Override
// С помощью метода doGet() сервлет сможет обрабатывать GET запросы
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
// Помещаем в ответ строку "Hello, World!"
PrintWriter out = response.getWriter();
out.println("Hello, World!");
}
}
В качестве бесплатной альтернативы Heroku мы предлагаем Railway. Он поддерживает деплой как из Github репозиториев, так и из локальных с помощью cli-утилиты. Также они нативно поддерживает деплой Хероку-проектов — ваш уже сконфигурированный Хероку-проект развернется и на Railway.
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт