Ich habe Java8 + Spring Boot mit GAE Java ausprobiert. Grundsätzlich sollte ich nur die offizielle Website machen, aber ich war süchtig nach der Entwicklungsumgebung, also machte ich mir eine Notiz. Oder besser gesagt, die offiziellen Dokumente waren ganz anders und ich war mir nicht sicher, auf welches ich mich beziehen sollte, also war es schwierig.
Dieses Mal basierend auf diesem Verwenden von Apache Maven und dem App Engine Plugin, [GitHub Repository](https: / Ich habe es geschafft, während ich den Inhalt von /github.com/GoogleCloudPlatform/getting-started-java/tree/master/appengine-standard-java8/springboot-appengine-standard ausgeliehen habe.
Wenn Sie einen Fehler machen oder dies tun möchten, zögern Sie bitte nicht, eine Bearbeitung anzufordern.
Ich bin eigentlich eine Gradle-Sekte, aber ich habe verschiedene Dinge mit Gradle ausprobiert, aber es gab Drehungen und Wendungen und ich habe damit aufgehört. Vielleicht ist es okay, wenn du es mit Uchiyoi-chan machst.
Ich habe diesen Code auf Github gesetzt.
Erstellen Sie mit Maven Archetype. Ich denke, das ist wahrscheinlich der beste Weg, es zu schaffen.
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:
Es scheint, dass Objectify empfohlen wird, wenn Sie den Datenspeicher verwenden. Wenn Sie also "useObjectify" mit "True" angeben, wird es von Anfang an zur Abhängigkeit hinzugefügt.
Wenn Sie ein wenig laden und so weiter, wird die Ausgabe wie folgt sein.
[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)
Selbst wenn Sie sich die offizielle Erklärung ansehen, können Sie sich nicht entscheiden, welche Sie wählen sollen, aber ich denke, es ist gut mit "3".
Ist es ungefähr "4" für diejenigen, die Cloud-Endpunkte verwenden möchten?
Ich habe es nicht richtig gesehen, aber der Unterschied besteht darin, ob Objectify zum Zeitpunkt der Erstellung angegeben werden kann und ob die Version von Mockito Skelton (2
) ist, es ist 2.0 β.
Es gibt keinen Unterschied im generierten Code.
Oder besser gesagt, es läuft auf Spring Boot, also werde ich den generierten Java-Code später wegwerfen.
Der Rest wird nach Gruppen-ID, Artefakt-ID, Paket usw. gefragt. Beantworten Sie diese also.
Damit ist der Quellcode für App Engine SE vervollständigt, der unter Java 8 ausgeführt wird. Es enthält nur Hello World.
Das AppEngine-Plug-In ist möglicherweise standardmäßig enthalten. Dies ist veraltet, also deaktivieren wir es.
Weitere Informationen finden Sie unter hier.
Es ist ungültig, weil es eingebaut ist und ich denke, es kann nicht deinstalliert werden. Ich denke, dass es mit dem Versions-Upgrade bald verschwinden wird.
Für andere Einstellungen wie das Cloud SDK sollten Sie sich auf die offizielle beziehen.
Erstellen Sie ein leeres Projekt nach Ihren Wünschen. Modul dort importieren.
Bitte geben Sie Java 8 als SDK des Projekts an.
Importieren Sie die erstellte Anwendung in das IntteliJ-Projekt.
Bitte geben Sie pom.xml an und importieren Sie.
Wenn Sie das Projektstrukturfenster importieren und schließen, wird GAE erkannt und unten rechts festgelegt. Konfigurieren Sie es daher.
Anschließend wird die Luft gelesen, die Einstellungen gelesen und Sie können lokale Server- und Bereitstellungseinstellungen auf IntelliJ ausführen.
Danach müssen Sie das Projekt mit Edit Configure for Deployment konfigurieren.
Wählen Sie Bereitstellen. Es ist in Ordnung, wenn Sie so etwas wie eine Geschenkmarke wählen.
Anschließend sehen Sie unten die Bereitstellungs- und Projekteinstellungen.
Sie müssen sich zum ersten Mal anmelden. Klicken Sie daher auf die Schaltfläche, um den Browser zu öffnen und sich anzumelden. Wenn es zertifiziert ist, gehören einige Projekte wie ein Image. Wählen Sie daher das Ziel-GCP-Projekt aus.
Bereitstellungsoptionen
Es scheint besser, die Version auf Automatisch generieren zu setzen. Wenn Sie den Datenverkehr sofort bereitstellen möchten, können Sie "Die bereitgestellte Version heraufstufen, um den gesamten Datenverkehr zu empfangen" aktivieren. Wenn es Updates wie Cron und Index gibt, ist es eine gute Idee, Update Hogehoge zu aktivieren.
Lass uns mit pom.xml
spielen.
AppEngine scheint Jetty zu sein, daher müssen Sie den Spring Boot-Standard-Tomcat ausschließen.
Hinzugefügt zu "<Abhängigkeiten>"
<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>
<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>
Hinzugefügt zu <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
</plugin>
Hinzugefügt zu <Eigenschaften>
<spring.boot.version>1.5.6.RELEASE</spring.boot.version>
Implementieren Sie danach die Spring Boot-Anwendung normal. Es ist in Ordnung, die vom Archetyp generierte HelloAppEngine und index.jsp zu löschen.
Es wird empfohlen, es auszuschalten, da es ärgerlich ist, in der Protokollierung angezeigt zu werden. Wenn es eingeschaltet ist, sieht es so aus.
Fügen wir die Einstellung zu "application.yml" hinzu.
spring:
main:
banner-mode: "off"
Es ist eine Atmosphäre, die sich mit Spring Boot normal entwickeln lässt.
Um ehrlich zu sein, habe ich mich ungefähr einen Tag lang gefragt, was die Maven-Aufgabe war, weil ich zuerst die Dokumentation und den Quellcode des Repositorys gelesen habe, aber ich denke, dass dies für die lokale Entwicklung ausreicht. ..
Wenn Sie es mit einem Befehl starten, können Sie mvn app engine: run
verwenden.
Sie können auch versuchen, die Anwendung ordnungsgemäß zu implementieren.
Es dauert ungefähr 10 Sekunden, bis der erste Zugriff gestartet und mit diesem Quellcode gearbeitet wird, der fast keine Abhängigkeiten aufweist. Ich kann dazu nichts sagen, also machen Sie bitte Ihr eigenes Urteil. (Ich habe die Startzeit vom Beginn der Protokollierungsanforderung bis zum Ende des Anwendungsstartprotokolls beurteilt. Ist dies der Fall?) Bitte sagen Sie mir, wie ich es richtig messen soll.
Ich denke nicht, dass es für monolithische Anwendungen geeignet ist, die zum ersten Mal furchtbar langsam sind, wenn die Abhängigkeit auf Morimori eingestellt ist.
Ich stelle das App Engine Plugin von maven bereit, verwende aber den Befehl gcloud app
.
Der Quellcode für diese Zeit ist hier
Recommended Posts