7

Ich habe ein paar Wochen vor dem nächsten Projekt & Ich suche/will unseren Entwicklungsprozess zu rationalisieren, um den UX & Entwickler die kürzeste Vorlaufzeit zu geben, um die Validierung zu ändern (zB 10 Sekunden für einen Java Wechsel/1 Sekunde für UX/JS ändert sich).Ist Echtzeit-Feedback mit Spring/Tomcat/Intellij möglich?

Grundsätzlich möchte ich, was John Lindquist zeigt in diesem video (RT Feedback mit WebStorm & die Winkel ToDo-Liste Beispiel 3 Minuten), aber ich mit Tomcat & Frühling.

Ich habe dies in den letzten paar Tagen mit unserem Stack (Tomcat8, Intellij13, Spring4, Angular) erforscht/gespielt und ich verstehe es einfach nicht, also denke es ist mein Mangel an Wissen in diesem Bereich und ich ' Ich vermisse etwas (daher die Frage SO).

Was ich bisher erreicht haben, für UX Typen

Grunt (unter Verwendung von Knoten), um die ‚statische Ressourcen‘ (JS/SCSS/Vorlagen) und livereload servieren Chrom aufzufrischen - das ist sehr gut und sehr nah an dem, was ich will (RT feedback von SCSS/JS/HTML Änderungen), aber das große Problem ist, dass Knoten die statischen Ressourcen und nicht TC so mit Cross Origin Policies (gelöst über und this) - Neubauten in Intellij wird chaotisch mit Grunt beteiligt - sah SCSS Compiles mit file watchers, aber es ist nicht Gelieren) - Kurz gesagt, ich habe nicht Grunt Service statisch & TC die REST API arbeiten in ha Harmonie. Eine andere Option war this guy aktualisiert die TC-Ressourcen mit grunt, wenn die Datei ändert, aber nur nicht dorthin gehen wollen.

Das führt mich zurück zu Dateibeobachter, Jetbrains Live bearbeiten (was das Websturm Video zeigt) und intellij und wieder, ich bin nah, wenn es um statische Inhalte geht, wie intellij kann die Ressourcen auf TC auf Frame-Deaktivierung aber aktualisieren (und ein großes ABER) Dies ist NICHT Echtzeit und wenn Sie die Ressourcenstruktur ändern, müssen Sie die Seite aktualisieren, aber wir arbeiten an einer SPA, die Kontext bei der Aktualisierung verliert, die die Jungs verlangsamt, wie Sequenzen zu antworten, um zurück zu bekommen wo die Änderung passiert und auch bei der Verwendung von intellij müssen sie 'Rahmen deaktivieren', um die Änderungen an TC (sie sind auf zwei Monitoren, so zu Tab intellij ist das gleiche wie das Drücken einer Taste, um die Änderungen zu deployen)

Das beste bis heute ist Grunzen und akzeptieren die gleiche Ursprungsprobleme für die Entwicklung, aber fehlt mir etwas für die UX Jungs?

Was ich bisher erreicht haben, für Dev Jungs

Bevor wir beginnen, nicht leisten können JRebel und nicht haben Spring Loaded mit intellij und Kater arbeiten (noch) nicht.

zu diesem Zeitpunkt TC einfach von intellij aktualisiert mit Klassen ändern und neu starten, wenn Bean Definitionen/Methodenstruktur ändert. Schlechte ich weiß, aber 'es ist, was wir verwenden'

Blick auf Spring Boot - vielversprechend, aber idealerweise möchte nicht die Konfiguration Freiheit weg geben, aber es gibt Live-Updates auf dem Server glaube ich.

Grails ist im Moment out, kann also nicht profitieren.

Ich weiß, Play erlaubt einige Echtzeit-Updates, aber wieder, habe ich nicht im Detail betrachtet und eine große Verschiebung von der aktuellen Stapel.

Zusammenfassung

Auf der Entwicklungsseite wird wahrscheinlich halten bearbeiten zu leben und die Refresh/Deaktivierung Ausgabe zu akzeptieren, so dass wir nicht ‚erreichen‘ kann, was John Lindquist in WebStorm zeigt, dh in Echtzeit aktualisiert, wenn Ressourcen Änderungen bei der Verwendung von Tomcat/Intellij/Chrome - oder zumindest "Ich weiß nicht", wie man das erreicht?

Server Seite - ich arbeite immer noch daran, werde weiterhin auf Feder geladen und Intellij Integration dann schauen Sie sich Jibel und sehen, was für ein Budget, wenn überhaupt, können wir aber in der Zwischenzeit gibt es irgendwelche Alternativen als Ich sehe die node/ruby ​​/ grails jungs, die alles bekommen, also glaube ich, dass ich es sein muss und mir das beste Setup fehlt, um superschnelles Feedback von unseren Codeänderungen zu bekommen, wenn wir Tomcat & Spring verwenden?

Antwort

8

Kurz gesagt, ja, es ist möglich & habe erreicht, was ich erreichen wollte - das waren alle Entwicklungsänderungen in einer Java EE-Plattform (einschließlich JS/SCSS Changes und Spring/Java Changes) in 'Echtzeit' geschehen (5/10 Sekunden Server, 2 Sekunden ux). Ich habe ein wenig video alles in Aktion aufgezeichnet (bitte auf den Mangel an Dramatik entschuldigen) ..

Stapel:

  • AngularJS

  • Grunt -serving statische Seiten mit einem http proxy zu /service Kontextaufrufe. Der Proxy wird aus 2 Gründen benötigt - 1 ist zu um die Ursprungsprobleme des Kreuzes & 2 zu umgehen - so dass in Echtzeit statische Ressourcenänderungen (HTML/JS/SCSS) in Chrome angezeigt werden - das können Sie mit Tomcat nicht tun da die Ressourcen in den Web-App-Ordner in TC kopiert werden und nicht direkt von Quelle geliefert wird (Intellij kann bei Deaktivierung des Frames erneut bereitstellen, aber das funktioniert nicht gut und es ermöglicht keine sofortige Änderung in Chrome) ..

  • Grunt überwacht SCSS Änderungen (ich glaube, Sie Datei-Beobachter in intellij aber Grunzen dazu dient, den statischen Inhalt haben, obwohl verwenden könnte)

  • Live Bearbeiten von Aktualisierungen Chrome on the fly.

  • JRebel für Frühjahr/Server-Seite Änderungen an Tomcat (Lizenz für kommerzielle Nutzung erforderlich)

Die subtile, aber wichtige Sache ist, was Grunt tut ..

+0

mein Kiefer fiel ernsthaft, als ich das sah. Ich arbeite hauptsächlich mit Grunt/Karma in einem Java-Intelli-Setup und es ist das langsamste schmerzhafteste Ding, das jemals von etwas wie Python kommt. Wir verwenden Google App Engine und Jersey. Kann dies mit dieser Art von Einrichtung erreicht werden? Bitte helfen Sie !!!! –

1

Ich denke, dies ist eine einfachere Alternative zu Ians Lösung:

Struktur der Anwendung in drei Teilen:

  • REST-Dienste (src/main/java) und
  • Web-Quelldateien (src/web, beinhaltet sie nicht in dem letzten Krieg)
  • Statische Dateien von Grunzen (src/web/dist produziert und sie in Endkrieges ist an /)

konfigurieren CORS-Filter (die Sie ohnehin für REST-Services benötigen) [1]

nun der Kicker:

  • starten Kater (wie üblich)
  • Ihre AngularJS Webseite von src/Web Start (mit IntelliJ es ist nur Debug index.html)
  • erledigt - alle Änderungen in der Quelle html/js-Dateien werden in der nächsten Aktualisierung des Browsers (oder verwenden sie grunzen Plugin, um es noch mehr „live“) reflektiert

[1] https://github.com/swagger-api/swagger-core/wiki/CORS