J'ai essayé Java8 + Spring Boot avec GAE Java. En gros, je devrais juste faire le site officiel, mais j'étais accro à l'environnement de développement, alors j'ai pris une note. Ou plutôt, les documents officiels étaient assez différents et je ne savais pas à quel document me référer, donc c'était difficile.
Cette fois, sur la base de Utilisation d'Apache Maven et du plug-in App Engine, [GitHub Repository](https: / Je l'ai fait en empruntant le contenu de /github.com/GoogleCloudPlatform/getting-started-java/tree/master/appengine-standard-java8/springboot-appengine-standard).
Si vous faites une erreur ou souhaitez faire cela, n'hésitez pas à faire une demande de modification.
Je suis en fait une secte Gradle, mais j'ai essayé diverses choses avec Gradle, mais j'ai arrêté à cause de rebondissements. Peut-être que ce n'est pas grave si vous le faites avec Uchiyoi-chan.
J'ai mis ce code dans Github.
Créez avec Maven Archetype. Je pense que c'est probablement la meilleure façon d'y arriver.
mvn archetype:generate -Dappengine-version=1.9.54 \
-Djava8=true \
-DCloudSDK_Tooling=true \
-DuseObjectify=true \
-Dapplication-id=your-app-id \
-Dfilter=com.google.appengine.archetypes:
Il semble que Objectify soit recommandé lors de l'utilisation de Datastore, donc si vous spécifiez ʻuseObjectify` avec True, il sera ajouté à la dépendance depuis le début.
Si vous effectuez un peu de chargement et ainsi de suite, la sortie sera la suivante.
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> com.google.appengine.archetypes:appengine-flexible-archetype (A basic Java application with Google App Engine flexible.)
2: remote -> com.google.appengine.archetypes:appengine-skeleton-archetype (A skeleton application with Google App Engine)
3: remote -> com.google.appengine.archetypes:appengine-standard-archetype (A basic Java application with Google App Engine Standard)
4: remote -> com.google.appengine.archetypes:endpoints-skeleton-archetype (A skeleton project using Cloud Endpoints Frameworks with Google App Engine Standard)
5: remote -> com.google.appengine.archetypes:guestbook-archetype (A guestbook application with Google App Engine)
6: remote -> com.google.appengine.archetypes:hello-endpoints-archetype (A simple starter application using Cloud Endpoints Frameworks with Google App Engine Standard)
7: remote -> com.google.appengine.archetypes:skeleton-archetype (Archetype with a README about Google App Engine archetypes)
Même si vous regardez l'explication officielle, vous ne pouvez pas décider laquelle choisir, mais je pense que c'est bien avec «3».
S'agit-il de "4" pour ceux qui souhaitent utiliser Cloud Endpoints?
Je ne l'ai pas vu correctement, mais la différence est de savoir si Objectify peut être spécifié au moment de la création et si la version de Mockito est Skelton (2
), c'est 2.0 β.
Il n'y a aucune différence dans le code généré.
Ou plutôt, il fonctionne sur Spring Boot, donc je jetterai le code Java généré plus tard.
Le reste sera demandé pour l'ID de groupe, l'ID d'artefact, le paquet, etc., alors répondez-y.
Ceci termine le code source pour App Engine SE qui s'exécute sur Java 8. Il contient juste Hello World.
Le plug-in AppEngine peut être inclus par défaut. Ceci est obsolète, alors désactivons-le.
--Installez le plug-in Google Cloud Tools --Désactiver le plug-in Google App Engine
Veuillez consulter ici pour plus de détails.
Il n'est pas valide car il est intégré et je pense qu'il ne peut pas être désinstallé. Je pense qu'il disparaîtra bientôt avec la mise à jour de la version.
Pour les autres SDK Cloud et autres paramètres, je pense que vous devriez vous référer à celui officiel.
Créez un projet vide comme vous le souhaitez. Importez le module là-bas.
Veuillez spécifier Java 8 comme SDK du projet.
Importez l'application créée dans le projet IntteliJ.
Veuillez spécifier pom.xml et importer.
Si vous importez et fermez la fenêtre Structure du projet, GAE sera détecté et défini en bas à droite, veuillez donc le configurer.
Il lit ensuite l'air, lit les paramètres et vous permet d'exécuter le serveur local et les paramètres de déploiement sur IntelliJ.
Après cela, vous devez configurer le projet avec Edit Configure pour le déploiement.
Sélectionnez Déployer. Ce n'est pas grave si vous choisissez quelque chose comme une marque de cadeau.
Ensuite, vous verrez les paramètres de déploiement et les paramètres de projet ci-dessous.
Vous devez vous connecter pour la première fois, cliquez donc sur le bouton pour ouvrir le navigateur et vous connecter. S'il est authentifié, certains projets seront possédés comme une image, alors sélectionnez le projet GCP cible.
Options de déploiement
Il semble préférable de définir la version sur Génération automatique.
Si vous souhaitez avoir la version déployée du trafic immédiatement, vous pouvez activer Promouvoir la version déployée pour recevoir tout le trafic
.
S'il existe des mises à jour telles que Cron et Index, il est judicieux d'activer Update Hogehoge.
Jouons avec pom.xml
.
AppEngine semble être Jetty, vous devez donc exclure le Tomcat par défaut de Spring Boot.
Ajouté à <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
<!-- Exclude Tomcat so that it doesn't conflict w/ Jetty server -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Exclude any jul-to-slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<scope>provided</scope>
</dependency>
Ajout de «
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Ajouté à <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
</plugin>
Ajouté à <properties>
<spring.boot.version>1.5.6.RELEASE</spring.boot.version>
Après cela, veuillez implémenter l'application Spring Boot normalement. Vous pouvez supprimer HelloAppEngine et index.jsp générés par l'archétype.
Il est recommandé de le désactiver car il sera ennuyeux d'apparaître dans Logging. Quand il est allumé, cela ressemble à ceci.
Ajoutons le paramètre à ʻapplication.yml`.
spring:
main:
banner-mode: "off"
C'est une atmosphère qui semble pouvoir se développer normalement avec Spring Boot.
Pour être honnête, j'ai passé environ une journée à me demander quelle était la tâche Maven car j'ai lu la documentation et le code source du référentiel au début, mais je pense que cela suffit pour le développement local. ..
Si vous le démarrez avec une commande, vous pouvez utiliser mvn app engine: run
.
Vous pouvez également essayer d'implémenter correctement l'application.
Il faut environ 10 secondes pour que le premier accès démarre et commence à travailler avec ce code source, qui n'a presque pas de dépendances. Je ne peux rien dire à ce sujet, alors faites votre propre jugement. (J'ai évalué l'heure de démarrage entre le début de la demande de journalisation et la fin du journal de démarrage de l'application. Est-ce le cas?) Veuillez me dire comment le mesurer correctement.
Je ne pense pas que cela convienne aux applications monolithiques, qui ont tendance à être terriblement lentes pour la première fois si la dépendance est définie sur Morimori.
Je déploie le plugin de moteur d'application de maven, mais j'utilise la commande gcloud app
.
Le code source pour cette fois est ici
Recommended Posts