# Maven mit Tomcat



## eric (30. Jan 2008)

Hallo Forum,

ich versuche gerade, mich mit Maven vertraut zu machen. Das installieren von meiner WebApp funktioniert auch super. Mein Problem: Wenn ich die WebApp erneut mit _redeploy_ auf dem Serverinstallieren will, wird das War in das richtige Verzeichnis gepackt, aber die Anwendung, die läuft bleibt noch die alte :-(
Eine mögliche Lösung ist die installierte Anwendung zu erst und installiere danach neu. Das ist beim Entwickeln aber unpraktisch.
Welche Maven-Goals muss ich verwenden?

Grüße Eric


----------



## maki (30. Jan 2008)

Welches Plug-in verwendest du denn?

Danach kann man googeln, und bekommt meistens die Doku dieses Plug-ins.

GEht es um einen Deploy auf der Prod Maschine?
Zum Testen verwende ich war:exploded, kopiert mir die Webanwedung ins Target, Tomcat bemerkt die Änderungen und aktualisiert sich dann, geh aber nicht für Klassen, XML oder propertiy Dateien, da muss der Server erst neu gestartet werden.


----------



## eric (30. Jan 2008)

ich verwende das Mojo-Plugin. Die Doku zum Deployen ist unter http://mojo.codehaus.org/tomcat-maven-plugin/deployment.html zu erreichen, hilft aber nicht wirklich.

bei _tomcat:explode_ erhalte ich folgenden fehler:

[INFO] tomcat:exploded
[INFO] Deploying war to http://localhost:8080/wicketByMaven-1.0-SNAPSHOT 
org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager: FAIL - Application already exists at path /wicketByMaven-1.0-SNAPSHOT

Es ist mir egal, ob das schon da ist. Es soll ja überschrieben werden. Und von Hand neustarten ist auch d...f.


----------



## maki (30. Jan 2008)

hmm...

Geht das hier?
mvn war:exploded tomcat:redeploy
bzw. aus Eclipse
war:exploded tomcat:redeploy

Ich benutze das Tomcat Plugin nicht, da es Tomcat 3.3 (würg) nicht unterstützt, ich benutze nur war und war:exploded, restart mache ich immer manuell, ein Klick mit der Maus 

Falls ich mal ein anderes, moderneres  Projekt nach Maven 2 konvertiere sehe ich mir das mal an, bin sehr zufrieden mit Maven 2.


----------



## eric (30. Jan 2008)

das _tomcat:redeploy_ führt nicht dazu, dass die Anwendung neu geladen wird. Alle Änderungen in Klassen oder HTML werden ignoriert. Ich habe noch mal ein _tomcat:stop_ und ein _tomcat:start_ hinterhergeschoben, ohne jede Wirkung


----------



## DP (30. Jan 2008)

*verschoben*


----------



## eric (31. Jan 2008)

Hat jemand mit dem Cargo-Plugin bessere Erfahrungen gemacht?


----------



## maki (31. Jan 2008)

Wenn es nur um das Testen geht, verstehe ich dein Problem nicht.

Ich installiere nicht die Anwednung im Tomcat, sondern sorge dafür, das TC den Pfad für die Webanwednung in meinem target hat.
Nach Änderungen muss ich dann nur noch war:exploxed ausführen, und schon hat TC die Änderungen übernommen.
Das funktioniert übrigens nicht für Dateien ausser JSPs, HTML, CSS, JavaScript. Sobald du eine Klasse, eine Property Datei, eine XML oder sonstwas änderst, muss der TC sowieso neugestartet werden, doch dafür reicht ein Mausklick.


----------



## eric (1. Feb 2008)

da muss ich ja bei jedem neuen Projekt den TC umconfigurieren. Das schmeckt mir nicht. Ich werd einfach mal meine alten Antskripte versuchen einzubinden.


----------



## maki (1. Feb 2008)

Das macht man doch von Eclipse aus 

"Umkonfiguriert" werden muss da nix, es werden nur neue Konfigurationen hinzugefügt, so wie immer wenn ein neues Projekt dazukommt.

Mit ant geht es natürlich auch, finde ich aber sehr umständlich.


----------



## eric (14. Feb 2008)

maki hat gesagt.:
			
		

> Das macht man doch von Eclipse aus


Hast du eine Beschreibung wie Du das xmachst. 

Merci schon mal


----------



## maki (14. Feb 2008)

Ich nutze das Sysdeo Tomcat Plugin(läuft auch mit TC 3.3) im Gegensatz zu den Servern des WTP.

WTP:
Neuen TC Server anlegen (sollte klar sein, wenn nicht sag bescheid) und die Konfig öffnen (Kontextmenü "open"), dann das "Modules" Tab auswählen, den Button "Add external Web Module" und dann den Pfad zum target und den Kontext (als "Path") angeben.

Sysdeo:
Sysdeo TC Plugin runterladen (http://www.eclipsetotale.com/tomcatPlugin.html) und den Anweisungen der Anleitung folgen.

In beiden Fällen solltest du ein war:exploded ausführen wenn du JSP/HTML/JavaScript/CSS Dateien änderst, wenn du XML, Property oder gar Java Klassen änderst, muss der Server neugestartet werden.

Es soll auch ein Tomcat Plugin für Maven geben, das den refresh des Targets automatisch ausführt, hab es allerdings noch nciht getestet, müsste ich mal danach suchen.


----------



## slomo (4. Aug 2008)

Das kommt in deine pom!!!
<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <configuration>
          <server>myserver</server>
        </configuration>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

und dass in deine settings.xml vvon maven(username=manager Rolle, password: das passwort vom tomcat manager)

<settings>
  ...
  <servers>
    ...
    <server>
      <id>myserver</id>
      <username>myusername</username>
      <password>mypassword</password>
    </server>
    ...
  </servers>
  ...
</settings>


----------

