Gibt es eine Möglichkeit, den Maven Appengine Devserver zu veranlassen, statische Dateien automatisch zu aktualisieren?

8

Die neueste Version des Maven-Plugins hat die Aktualisierung des Codes alle 5s ermöglicht, was eine große Verbesserung darstellt. Aber wenn ich das nicht falsch konfiguriere, scheint es keine statischen Dateiänderungen aufzunehmen, wie zum Beispiel laufendes JavaScript, das eine Verbindung zum Appengine-Code herstellt.
Gibt es eine Möglichkeit, dieses Verhalten zu ändern, oder muss ich nur auf eine neue Version warten?

    
OverclockedTim 25.01.2014, 00:57
quelle

3 Antworten

2

Automatische Updates können derzeit nicht mit dem anhängigen devserver allein durchgeführt werden. Genau genommen müssen wir warten.

Aber Sie können den Effekt des nahtlosen html / js / css / usw.-Updates, des heißen Java-Code-Ersatzes, usw. mit der Konfiguration unten erzielen.

  1. Konfigurieren Sie Apache httpd oder Nginx, um statischen Code direkt von Ihrer Kriegsquelle zu liefern und an die App-Engine für Servlets weiterzuleiten. In meinem Fall sind alle HTML direkt aus dem Webapp-Verzeichnis zugänglich und Servlets werden über / sim / aufgerufen. Unter Verwendung von nginx und 7070-Port sieht meine funktionierende nginx-Konfiguration folgendermaßen aus:

    %Vor%

Verwenden Sie diese Dokumentation von nginx für weitere Konfigurationen.

Konfigurieren Sie Eclipse und GAE separat.

  1. Nun können Sie direkt Änderungen an der Quelle vornehmen und sie aktualisieren lassen, sowohl für html (über nginx) als auch für Servlets (über devserver).
  2. Fügen Sie diesen Web-App-Ordner zu Ihrem Chrome Dev Tools, Quellen-Arbeitsbereich hinzu, und das Leben wird einfacher. Kleine Änderungen können direkt von Chrome zu Src über Strg
  3. gespeichert werden

Bitte beachten Sie, dass dies zwar großartig ist, Sie jedoch Ihre App vor dem Hochladen einmal ausschließlich auf 8080 (devserver port) testen sollten, nur für den Fall, dass ein Fehler in maven config vorliegt und target nicht korrekt erstellt / bedient wird.

Alternative Idee für die Synchronisierung : Wenn Sie nginx / httpd aus irgendeinem Grund nicht verwenden möchten, können Sie target ... webapp zum chrome-Arbeitsbereich hinzufügen, dort direkt für die nahtlose Aktualisierung arbeiten und dann verwenden lsyncd, um das Ziel zurück zu src zu synchronisieren. Ich habe es noch nicht versucht, aber es sieht machbar aus, wenn auch ein bisschen riskant.

    
PoojaC20 07.07.2014 02:25
quelle
2

Bisher habe ich am besten die folgenden Einträge in pom.xml konfiguriert. Dadurch werden automatisch Ihre statischen Dateien erstellt und auf der Seite reflektiert.

%Vor%

Und noch ein Eintrag nach

%Vor%

Das funktioniert gut. Sobald statische Dateien geändert und gespeichert wurden, wurden sie auf der Seite angezeigt.

    
pra 22.01.2015 22:33
quelle
0

Wie bei PoojaC20 war es mir auch nicht möglich, das mit devserver allein zu machen, aber ich hatte eine andere Problemumgehung, von der ich dachte, dass ich sie teilen würde, falls andere es hilfreich fanden.

Ich host jetzt meine statischen Entwicklungsdateien außerhalb des GAE-Devservers, indem ich grunt-serve verwende. Dies ermöglicht eine große Anzahl von Vorteilen einschließlich:

  1. Automatische Aktualisierung der Seite, wenn sich statische Dateien geändert haben - Sie müssen nicht einmal auf die Schaltfläche zum Aktualisieren drücken.
  2. Automatische Konvertierung von erweiterten CSS wie LESS
  3. Automatische Konvertierung von JavaScript-kompilierbaren Sprachen wie CoffeeScript
  4. Mechanismus für die Minimierung und CDN-Verstärkung, wenn die Entwicklung abgeschlossen ist.

Die tiefgründigste Folge davon ist, dass ich von der sitzungsbasierten Authentifizierung zu OAuth- oder OpenID Connect-basierten Authentifizierungssystemen wechseln und alle meine Web-Service-Anrufe CORS-kompatibel machen musste. Das ist etwas Arbeit, aber es hat auch einen sehr tiefen Vorteil:

  1. Sobald Ihr Web-Server auf die OpenID Connect-basierte Authentifizierung umgestellt hat, kann er sich jetzt identisch mit nativen (z. B. mobilen) Client- oder webbasierten Clients verbinden!
OverclockedTim 08.07.2014 05:19
quelle

Tags und Links