Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Deploy Java: Веб-технологии

Рассмотрим еще один способ деплоя приложения с 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.


Дополнительные материалы

  1. Деплой на Heroku

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Java-разработчик
Профессия
с нуля
Разработка приложений на языке Java
2 февраля 10 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»