LEKCJA 07b - JAVA (p) - deploy projektu na Heroku

LEKCJA 07b - JAVA (p) - deploy projektu na Heroku
ukryj menu
SPEC
aktualizacja: 2022-05-13 21:04:36

Deploy projektu na Heroku

poniżej przedstawiam sposób postępowania prowadzący do uploadu projektu z Intellij bezpośrednio na Heroku
procedura nie jest skomplikowana, a bardzo efektywna, bo zaraz można przetestować działanie na Heroku
wykorzystuje ona odpowiedni plugin mavena, który kompiluje i uploaduje aplikację na Heroku


1. pom.xml

dodajemy plugin heroku
uwaga: w odpowiednim miejscu trzeba podać nazwę aplikacji utworzonej na Heroku

<appName>heroku-app-name-01</appName>kopiuj

poniżej cały plik pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>heroku-app</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.heroku.sdk</groupId>
                <artifactId>heroku-maven-plugin</artifactId>
                <version>3.0.3</version>
                <configuration>
                    <appName>heroku-app-name-01</appName>
                </configuration>
            </plugin>
        </plugins>
    </build>


    <dependencies>      
    </dependencies>
    
</project>kopiuj



2. plik Procfile

jest to plik konfiguracyjny, potrzebny heroku do identyfikacji:
- jaki proces ma uruchomić (web)
- jakie skompilowane pliki są odpowiedzialne za działanie aplikacji, pobrane z katalogu /target aplikacji
- jaka jest nazwa klasy wejściowej

plik Procfile (bez żadnego rozszerzenia) wstawiamy w głównym katalogu aplikacji

jego zawartość

web: java $JAVA_OPTS -cp target/classes:target/dependency/* Appkopiuj

struktura katalogów aplikacji wygląda w tym wypadku jak poniżej

src/main/java/App.javakopiuj



3. plik system.properties - wersja javy

plik system.properties (bez żadnego rozszerzenia) wstawiamy w głównym katalogu aplikacji

a w nim podajemy wersję javy (domyślnie jest java 8)

java.runtime.version=17kopiuj

https://devcenter.heroku.com/articles/java-support#supported-java-versions

4. port

funkcja main nie może podawać na sztywno portu, jak wtedy kiedy korzystamy z aplikacji lokalnie, trzeba podać dynamicznie uzyskiwany port z Heroku

w App


port(getHerokuPort());kopiuj

i funkcja

static int getHerokuPort() {
        ProcessBuilder processBuilder = new ProcessBuilder();
        if (processBuilder.environment().get("PORT") != null) {
            return Integer.parseInt(processBuilder.environment().get("PORT"));
        }
        return 4567;
}kopiuj


5. skompiluj projekt z menu run

i sprawdź czy w katalogu target/classess/...
pojawiła się skompilowany plik App i inne


6. konfiguracja run w Intellij

służy już do deployu na heroku

- z menu run/edit configurations wybierz +

Mavenkopiuj

- w linii command line wpisz

heroku:deploykopiuj

- odpalenie z menu run

run [deploy]kopiuj

- rebuild

po zmianach trzeba przebudować projekt

menu build/rebuildkopiuj

7. problem z deployem

w razie problemu z autentykacją deployu na heroku widoczną w terminalu intellij

- instalujemy heroku-cli


https://devcenter.heroku.com/articles/heroku-cli


- restart intelliJ
- uruchamiamy terminal
- polecenie


heroku loginkopiuj

- logujemy się w oknie przeglądarki (albo w terminalu)
- deploy projektu
- mogą oczywiście pojawić się błędy już po deployu - wtedy czytamy logi na heroku


Uwaga: jeśli w terminalu nie widać polecenia heroku, można uruchomić z lokalizacji gdzie cli się zainstalowało

działająca na heroku poprzednia aplikacja

https://ds-sparkapp-06.herokuapp.com/kopiuj