[JAVA] Déployer un projet Eclipse basé sur Tomcat sur Heroku

Préface

Il semble y avoir une grande variété de façons de publier des applications Java sur Heroku, mais c'est un mémo lorsque l'environnement de production est Heroku lors du développement local à l'aide de Tomcat en orthodoxe.

Préparation préalable

・ Pleiades All in One Eclipse Release 2018-09 (Compatible avec Eclipse SimRel 2018-09) ・ Heroku -Vérifiez jusqu'à ce que "Hello World on Heroku !!" (toujours local) s'affiche dans le projet Web dynamique dans Eclipse. devtest_heroku01.png

Préparation côté Heroku

Cette procédure vient en premier car je voulais d'abord sécuriser le nom de l'application, mais elle est également possible après la conversion au projet Maven que je fais plus tard. Cette fois, je l'ai créé avec le nom devtest-heroku comme suit. devtest_heroku02.png Ensuite, allez dans l'onglet Paramètres devtest_heroku03.png Spécifiez le pack de construction. devtest_heroku04.png Cette fois, c'est Java. devtest_heroku05.png Ajoutée. devtest_heroku06.png

Convertir en projet Mave

Cependant, ce n'est pas une conversion, mais ici nous prendrons la méthode de nouvelle création ⇒ copie. Commencez par créer un nouveau projet Maven. Je l'ai nommé devtest-heroku. devtest_heroku07.png Sélectionnez "maven-archetype-webapp" comme type d'architecture. devtest_heroku08.png Différents paramètres sont comme ça. devtest_heroku09.png Après l'avoir créé, nous apporterons quelques modifications.

Correction du chemin de construction

devtest_heroku10.png Il indique que le dossier de projet / src / main / java et le dossier de projet / src / test / java n'existent pas, alors créez-les physiquement. Pour Windows, vous pouvez utiliser l'Explorateur.

Modifications JRE

devtest_heroku11.png Lorsque vous créez un projet Maven, la valeur par défaut est comme Java5, alors sélectionnez Java8.

Ajouter un serveur d'exécution

devtest_heroku12.png devtest_heroku13.png devtest_heroku14.png Cette étape n'est peut-être pas nécessaire, mais j'utilise Tomcat 8 dans mon environnement, j'ai donc ajouté ce runtime.

Changer de facette du projet

Il s'agit également de Java 5, alors changez-le en Java 8. devtest_heroku15.png devtest_heroku16.png

Copie du code source

Après avoir créé le package: dev.local, copiez le fichier comme indiqué dans l'image. devtest_heroku17.png

Modifier pom.xml

Au stade de la création du projet Maven, je pense que les fichiers avec le contenu suivant ont été créés,

pom.xml


<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>dev.local</groupId>
  <artifactId>devtest-heroku</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>devtest-heroku Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>devtest-heroku</finalName>
  </build>
</project>

Comme ci-dessous -Ajout de la dépendance de servlet aux dépendances -Ajout de plugins en cours de construction (ajout de webapp-runner.jar de Tomcat) Fait.

pom.xml (après modification)


<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>dev.local</groupId>
  <artifactId>devtest-heroku</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>devtest-heroku Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>devtest-heroku</finalName>
    <plugins>
	    <plugin>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-dependency-plugin</artifactId>
	        <executions>
	        	<execution>
	            	<phase>package</phase>
	            	<goals><goal>copy</goal></goals>
	            	<configuration>
	                    <artifactItems>
	                        <artifactItem>
	                            <groupId>com.github.jsimone</groupId>
	                            <artifactId>webapp-runner</artifactId>
	                            <version>9.0.11.0</version>
	                            <destFileName>webapp-runner.jar</destFileName>
	                        </artifactItem>
	                    </artifactItems>
	                </configuration>
	            </execution>
	        </executions>
        </plugin>
    </plugins>
  </build>
</project>

Créer un Procfile

Il semble que ce soit le contenu qui est exécuté lorsque la Webapp est lancée côté Heroku, et le contenu est une commande Java. C'est OK s'il est créé avant de déployer Heroku. Créez directement sous le projet.

Procfile


web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war

Construire le projet Maven

Cela devient le paramètre de construction. Faites un clic droit sur pom.xml ⇒ Exécuter ⇒ Sélectionnez Maven Build et l'écran suivant apparaîtra. Réglez comme indiqué dans la ligne rouge et le cadre rouge. devtest_heroku18.png Si vous essayez de l'exécuter et que "BUILD SUCCESS" s'affiche, il est terminé une fois. devtest_heroku19.png

Essayez de le mettre sur Tomcat

Lorsque la construction est terminée, le fichier war est créé, je vais donc essayer de le mettre sur le Tomcat local. devtest_heroku20.png Lorsque je l'ai appelé à partir du navigateur, il était affiché en toute sécurité. devtest_heroku21.png

Déployer sur Heroku

À partir de là, suivez les étapes de l'onglet de déploiement de la console d'administration Heroku. devtest_heroku22.png Lorsque le maître git push heroku est terminé, essayez d'appuyer sur la commande heroku ps, Vérifiez l'état de Webapp. devtest_heroku23.png Accédez-y avec un navigateur, et si ce qui suit est affiché, il est terminé. devtest_heroku24.png

À la fin

Merci d'avoir évoqué la mauvaise procédure jusqu'à la fin. Il peut être converti directement sans créer de nouveau projet Maven, il peut donc être plus efficace de le faire là-bas. Si les différentes versions changent, le mouvement changera à nouveau, donc je pense que c'est juste la procédure pour le moment. Ce serait bien d'avoir un plug-in Eclipse Heroku.

Recommended Posts

Déployer un projet Eclipse basé sur Tomcat sur Heroku
Déployez le fichier de guerre sur Heroku
Déployer des applications Web Java sur Heroku
[Java] Déployer une application Web créée avec Eclipse + Maven + Ontology avec Heroku
Comment déployer avec heroku
Comment déployer une application Java Servlet simple sur Heroku
Créer un projet Tomcat à l'aide d'Eclipse
Créer un projet Java à l'aide d'Eclipse
Déployer l'image Docker de Flask sur Heroku
Déployer des rails sur Docker vers heroku
déployer heroku
Un mémorandum sur l'utilisation d'Eclipse
Importer le projet nablarch-example sur github dans Eclipse
Déployer l'application Spring Boot sur Elastic Beanstalk
Comment déployer à partir d'une image Docker locale vers Heroku
[CentOS, Eclipse] Charger les fichiers de bibliothèque dans le projet C
Déployer le projet Spring Boot sur Tomcat dans XAMPP
Eclipse ~ Création de projet Java ~
Étapes de déploiement sur Heroku
Présentation de Bugsnag à Heroku
Déployer RAILS sur EC2
Ouais, je suis sur Heroku!
Utiliser Corretto 11 avec Heroku
Résolution d'erreur sur Heroku
Une collection de commandes fréquemment utilisées dans heroku
Créez une base pour votre projet de traitement par lots dans Eclipse.
Importez par programme des projets Maven à partir de votre propre plug-in Eclipse
Créer un projet Tomcat en utilisant Eclipse Pleiades All in One
Comment déployer une application kotlin (java) sur AWS Fargate
Comment déployer l'application Rails sur AWS (résumé de l'article)