Maven schnellster Weg mit maven zu deployen

lime

Mitglied
Hallo zusammen,

ich bin zur Zeit dabei mich mit Java / Maven / Tomcat zu beschäftigen.

Zur Zeit habe ich eine Javaanwendung komplett bei mir installiert. Und wenn ich etwas entwickle, mache ich am Ende ein mvn install und eine .war Datei kommt heraus. Diese kommt dann ins Tomcat webapps Verzeichnis. Nach einem Tomcatneustart funktioniert die Anwendung dann auch.

Nur ist dieser Prozess unheimlich langsam. Geht das nicht schneller?

Muss ich immer die komplette WAR Datei erstellen? Das dauert lange und die Datei ist relativ groß (~80mb).

Mittelfristig möchte ich gerne einen externen Tomcatserver nutzen. Also lokal entwickeln und dann auf einem entfernten Server das Ergebnis ansehen.

Dazu habe ich auch schon ein Tutorial gefunden.

Deploy to Tomcat 6 using Maven

Wenn ich es richtig verstehe, würde dieses mavenskript dann die komplette Wardatei hochladen?
Mit meiner normalen DSL Leitung sind 80mb etwas aufwendig.

Gibt es keine Möglichkeit mit maven einfach nur den "diff" hochzuladen (quasi nur die veränderten Java Dateien) und das ganze dann erst auf dem Server erstellen lassen? Wobei auch hier eine Optimierung sehr gut wäre. Der Server hat zwar mehr Power, allerdings finde ich es auch etwas sinnlos immer das ganze Programm in eine war neu zu erstellen, obwohl man nur einen kleinen Teil geändert hat.

Und was das i Tüpfelchen wäre: Kann man die ständigen Tomcatneustarts auch irgendwie auf ein minimum reduzieren und nicht wegen jeder geänderten Codezeile neustarten?
 

XHelp

Top Contributor
Du kannst ja den Code bei Bitbucket oder sonst wo halten und dann auf dem Server auschecken und erst da bauen.

Was das i Tüpfelchen angeht: wie stellst du es dir vor? Ist ja auch nicht so, dass du nach jeder Zeile neu deployst.
 

lime

Mitglied
Wenn ich es zb. bei Bitbucket hochlade, muss ich ja quasi pro Änderung comitten?
Nach meinem Wissen, sollte man nur comitten, wenn es eine lauffähige/bugfreie Version ist.

Bzw. kann ich mit maven oder ähnlichen Tools mit einem Klick den commit und das builden auf einem remote Server anstoßen?
 

XHelp

Top Contributor
Ist ja dein privates Repository, dort kannst du nach jedem getipptem Zeichen commiten, wenn du Lust dazu hast.
Warum sollte Maven commiten? Das hat ja nun gar nichts damit zu tun.
Den Bauvorgang auf dem Server kannst du bestimmt mit ant anstoßen und den ant Skript wiederrum mit maven. Aber ich würde das nicht in einen Haufen werfen.
 

lime

Mitglied
Von der Grundidee bleibt es dabei, dass ich immer die komplette Anwendung mit maven bauen muss und die neue .war Datei erst nach einem Tomcat Neustart aktiv wird?

Ein "Teildeployment" gibt es nicht, sodass ich dadurch schnellere build Zeiten erreiche?
 

kama

Top Contributor
Hallo,

das Erste wäre zunächst einmal innerhalb einer IDE eine entsprechend Anbindung an Tomcat zu nutzen (Eclipse, Netbeans, o.ä.)...Es gibt sehr schöne Tomcat Plugins für Eclipse...

Damit während der Entwicklung garnicht auf einem Remote Tomcat deployen...Wenn Du der Meinung bist eine Funktionalität ist so weit...dann per mvn clean package eine WAR erstellen und dann eben die WAR Datei auf einen seperaten Tomcat deployen...Mit Netbeans gibt's die Möglichkeit eine Hot-Deployment zu machen was in der Entwicklungsphase sehr angenehm ist...

Weiterhin würde ich zur Entwicklung dann eben Bitbucket nutzen und dort dann die Sourcen halten...das Bauen würde ich auf einem entsprechenden Build Server machen lassen (Jenkins, Hudson, Bamboo, TeamCity o.ä.)...wobei der Build dann durch die entsprechenden Änderungen seitens der Versionskontrolle angestossen werden...

Gibt es keine Möglichkeit mit maven einfach nur den "diff" hochzuladen (quasi nur die veränderten Java Dateien) und das ganze dann erst auf dem Server erstellen lassen?
Du hast Maven nicht verstanden. Maven ist ein Build Tool und keine Versionskontrolle ...das ist eben die Aufgabe der Versionskontrolle...

Wobei auch hier eine Optimierung sehr gut wäre. Der Server hat zwar mehr Power, allerdings finde ich es auch etwas sinnlos immer das ganze Programm in eine war neu zu erstellen, obwohl man nur einen kleinen Teil geändert hat.
Bei einem Build Server ist dieses Vorgehen sogar absicht und gewollt. Damit wird sichergstellt, dass auch alles in der Versionskontrolle ist was rein muss und nichts vergessen wurde...Wenn auf dem Build Server erstellt wird checkt der Build-Server aus dem Versionskontroll-System aus und baut ...und das Ergebnis (war) kann man dann eben in einen Tomcat deployen....

Die Frage ist nur, ob das Deployen an dieser Stelle so sinnvoll ist, da ich vermute, dass Du hier noch testen möchtest?

Gruß
Karl Heinz Marbaise
 

lime

Mitglied
Vielleicht habe ich zu viel mit PHP gemacht. Ich bin es gewöhnt in einer Textdatei (in dem Fall .php) Code zu schreiben, zu speichern und sofort im Browser das Ergebnis sehen zu können. (Ja ich weiß, dass PHP eine Skriptsprache ist und so direkt nicht mit Java zu vergleichen ist).

In der Regel programmiere ich nicht perfekt, sondern schreibe Code und schaue ihn live an. Dann fehlt eine kleine Funktion, oder ähnliches und ich passe den Code an. Speichern, Browser F5 und ich sehe das Ergebnis. Das ist ein natürlicher, regelmäßiger Prozess.

Hier in Java muss ich:

- programmieren
- speichern

remote:
- (lokal) comitten
- build server (Hudson,...) laufen lassen (langer Prozess)
- Ergebnis ansehen

oder (wenn ich nur lokal bin)

- maven aufrufen (langer Prozess)
- tomcat neustarten (langer Prozess)
- Ergebnis ansehen

Vielleicht muss man sich dann einfach angewöhnen, wesentlich mehr in einem Schritt zu programmieren und nicht dauernd Zwischenergebnisse erst anzuschauen, denn da wird man ja blöde.
Bei mir dauert der Prozess zwischen speichern und im Browser das Ergebnis sehen 1-2 Minuten, im Gegensatz bei PHP 3-5 Sekunden.
Wenn ich das ganze noch auf einem Remote Server mit Hudson oder ähnlichem machen würde, wären es ja ganz schnell 2-5 Minuten pro Codeänderung(!).

Ist dieser Prozess so normal bei der Java Entwicklung?
 

XHelp

Top Contributor
Du kannst auch im Eclipse den Tomcat einbetten. Mit hot deploy brauchst du nicht mal den Tomcat neustarten. Da brauchst du auch nicht für die Zwischenergebnisse commiten.
 

schalentier

Gesperrter Benutzer
Bei uns sinds ca. 40 Minuten bis alles gebaut und vom CI getestet wurde. Ein lokaler Build mit Deployment in den JBoss + Bootzeit vom JBoss dauert ca. 15 Minuten ;-)

Sehr sinnvoll ist es, eine Debugverbindung zum JBoss/App-Server aufzubauen, dann kann man fuer kleinere Aenderungen HotDeploy verwenden (einfach Speichern druecken und die Codeaenderungen sind sofort im Server). Das geht allerdings nicht mehr, sobald man neue Methoden dazubaut oder sowas.

Ansonsten hilft nur, dass man testdriven entwickelt und dann eben zunaechst die Tests gruen bekommt. Erst danach faengt man mit Deployment an - wenn man dann quasi nix mehr korrigieren muss, hat man gute Tests ;-)
 

kama

Top Contributor
Hallo,

wie ich schon geschrieben habe...

in Eclipse oder was auch immer den Tomcat einbinden und dann kann Änderungen an der Seite (jsp, jsf...) einfach auch speichern und dann nach kurzer Zeit (3-5 Sekunden) auch im Browser sehen (reload nicht vergessen)....

Ich nehmen an, dass Du mit "Dann fehlt eine kleine Funktion, oder ähnliches und ich passe den Code an. " Änderungen an der Web-Seite meinst ...in was arbeitest Du denn JSP's, JSF, Wicket, ? ...

Abgesehen davon solltest Du bei anderen Funktionalitäten die in entsprechenden Klassen implementieren und dann mit Unit Tests absichern...Dabei hilft einem die Trennung von Datenhaltung (Model), Datendarstellung (View) und Ablauf (Controller)...in PHP gibt es dafür auch Frameworks zend Framework etc. In PHP sollte man auch keine Funktionalität mit HTML Code mischen sondern hier auch Trennen (dafür gibt so sachen wie Smarty Template etc. oder eben entsprechende Frameworks.)...

- programmieren
- speichern
Ok....

Was ich aber nicht verstehe..
remote:
- (lokal) comitten
- build server (Hudson,...) laufen lassen (langer Prozess)
- Ergebnis ansehen
Also wo committest Du jetzt..Du kannst doch zuerst einmal lokal committen und dann weiter machen...und eben mit Eclipse etc. lokal arbeiten...und dann später die Änderungen "pushen" .... => Dann kommt der Build Server etc. ins Spiel...

Gruß
Karl Heinz Marbaise
 

lime

Mitglied
MVC Modell, Frameworks, Unittests, etc. sind mir alle klar. Das gibts auch bei PHP :).

Hot Deployment war das Stichwort was ich gebraucht habe. Genau das habe ich gesucht.

Wenn es jetzt noch Hot Deployment auf einen Remote Server gibt, hätte ich alles was ich brauche :). Bis auf den kleinen Nachteil, dass neue Methoden noch den kompletten Prozess benötigen. Aber neue Methoden kommen ja beim Fehler beheben ja nicht so oft.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
Encera Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
P Nur einen Teilbaum in Maven releasen? Tools - Maven, Gradle, Ant & mehr 7
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
S Maven Unterschiedliche Deployments mit Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
P Erzeugen von WebServices mit Maven und Eclipse (external Tool) Tools - Maven, Gradle, Ant & mehr 2
aze Maven downgraden von 3.x auf 2.09 unter Linux Tools - Maven, Gradle, Ant & mehr 4
Rudolf JSF und Maven mit Eclipse Tools - Maven, Gradle, Ant & mehr 5
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
M Maven imports aus Modulen Tools - Maven, Gradle, Ant & mehr 4
P multimodul maven in SVN Tools - Maven, Gradle, Ant & mehr 3
D [Maven] neuerdings "No plugin found for prefix ..." errors Tools - Maven, Gradle, Ant & mehr 7
C Automatisches Deployen in ein externes Maven Repository. Tools - Maven, Gradle, Ant & mehr 5
D JUnit Test in Maven fail und in Eclipse erolgreich Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben