# Servlet-JSP-Anwendung mit Maven und Eclipse



## Sergeant_Pepper (28. Okt 2009)

Hallo,

ich habe mit dem Maven-Archetype maven-archetype-webapp und mit m2eclipse versucht, eine einfache Servlet- und jsp-Anwendung anzulegen, die unter Tomcat laufen soll. Nun komme ich überhaupt nicht weiter.

Das projekt wird zwar angelegt, aber dann tauchen Probleme und Fragen auf:

Wenn ich im Sourcen-Ordner projekt/src/main/resources Pakete und Java-Klassen anlege (z.B. ein Servlet), werden die *gar nicht von Eclipse übersetzt.* Die Icons an den Java-Dateien in den verschiedenen Eclipse-Views sehen auch anders aus als sonst, das "J" ist sozusagen "hohl".

In den Projekt-Properties von Eclipse ist als Source-Folder "projekt/src/main/resources" eingetragen. Auf  der Maven-Apache-Seite habe ich die Info gefunden, dass der Pfad zu webapp-Sourcen im Standardfall "projekt/src/main/webapp" lautet = Widerspruch zu dem, was der archetype angelegt hat.

Außerdem fehlen im POM dependencies zu den Tomcat-libs, z.B. zur servlet-api.jar.
Muss ich die manuell hinzufügen?

Habe den Eindruck, dass etwas ganz wesentliches fehlt...

Gibt es noch einen anderen Archetype, mit dem ich eine Tomcat-Servlet-Anwendung erstellen kann?


----------



## maki (28. Okt 2009)

> Habe den Eindruck, dass etwas ganz wesentliches fehlt...


Ich auch 

src/main/java - der Ort für Javaklassen, zB Servlets , wird von diesem Archetype nicht autm. erzeugt
src/main/resources - der Ort für alle Resourcen (nicht Web Ressourcen!), zB. Properties,, XML etc. - da kommen keine Javaklassen rein
src/main/webapp/ - hier sollten deine Webressourcen (JSPs, WEB-INF, CSS, JS, HTML, etc) rein

Nachdem du diese Ordner angelegt hast, am besten nochmal die Projektkonfiguration updaten (Rechtsklick Projekt -> m2)


----------



## Sergeant_Pepper (28. Okt 2009)

maki hat gesagt.:


> Ich auch
> src/main/java - der Ort für Javaklassen, zB Servlets , wird von diesem Archetype nicht autm. erzeugt


Den Ordner muss ich dann doch sicher in den Eclipse-Projekt-properties als src-Ordner eintragen?



> src/main/resources - der Ort für alle Resourcen (nicht Web Ressourcen!), zB. Properties,, XML etc. - da kommen keine Javaklassen rein


Diesen Ordner hat der archetype angelegt.


> src/main/webapp/ - hier sollten deine Webressourcen (JSPs, WEB-INF, CSS, JS, HTML, etc) rein


den auch

Und die Anhängigkeiten zu den libs (Servlet-API etc...) ? Die trägt man manuell ein?



> Nachdem du diese Ordner angelegt hast, am besten nochmal die Projektkonfiguration updaten (Rechtsklick Projekt -> m2)



Werde ich probieren...


----------



## maki (28. Okt 2009)

> Den Ordner muss ich dann doch sicher in den Eclipse-Projekt-properties als src-Ordner eintragen?


Nein, natürlich nicht, gehört zur Maven2 Konventionen und daher wird das von Maven/m2eclipse autom. gemacht, deswegen solltest du ja ein "update project configuration" machen nchdem du die Ordner angelegt hattest.



> Diesen Ordner hat der archetype angelegt.


Na Gott sei dank! 
Mal ernsthaft, eine WebApp als einstiegsprojekt für Maven2 ist sehr ambitioniert, willst du nicht lieber erst einfache Jars bauen um die Grundlagen ohne viel zusätzliche Komplexität zu begreifen?



> Und die Anhängigkeiten zu den libs (Servlet-API etc...) ? Die trägt man manuell ein?


Die trägst du manuell in die pom ein.
Der Archetype den du gewählt hast, ist sehr minimalistisch, er erzeugt ein Projekt das erstmal keine Servlets enthält, daher fehlen die Java Sourcen Ordner und die Dependency Einträge zur Servlet API in der pom.

Es gibt noch viel mehr Archetypes, zB. welche die dir ein komplettes Web Projekt mit Hibernate/Struts/Spring  anbindung und passenden Unittests erstellen, ist aber noch komplizierter, vor allem zum Einstieg 
Fang klein an, dann hast du schneller Erfolgserlebnisse, und vor allem: Lies die Doku 

Ist dir klar warum dein Servlet nicht erkannt wurde? -> falscher Ordner, fehlende Dependency zur Servlet-API


----------



## Sergeant_Pepper (28. Okt 2009)

maki hat gesagt.:


> Mal ernsthaft, eine WebApp als einstiegsprojekt für Maven2 ist sehr ambitioniert, willst du nicht lieber erst einfache Jars bauen um die Grundlagen ohne viel zusätzliche Komplexität zu begreifen?


Hab' ich schon, das kriege ich hin.
Die WebApp soll auch nur aus 2-3 Servlets und ebenso vielen JSPs bestehen. Die benötigten, eigenen jars habe ich in ein Nexus-Repo gestellt, die sind auch dort verfügbar.



> Es gibt noch viel mehr Archetypes, zB. welche die dir ein komplettes Web Projekt mit Hibernate/Struts/Spring  anbindung und passenden Unittests erstellen, ist aber noch komplizierter, vor allem zum Einstieg
> Fang klein an, dann hast du schneller Erfolgserlebnisse,



Auf Spring, Hibernate ... verzichte ich erst mal, damit habe ich noch gar nicht gearbeitet.


> und vor allem: Lies die Doku


mach ich ja, habe das Maven2-Buch von Addisson-Wesley und surfe so rum :rtfm:
Habe eben auf der Kommandozeile "mvn eclipse:help -Dgoal=eclipse -Ddetail=true" probiert und gesehen, dass es Optionen zum Erstellen von WTP-Projekten gibt. Probiere ich auch mal ...



> Ist dir klar warum dein Servlet nicht erkannt wurde? -> falscher Ordner, fehlende Dependency zur Servlet-API


 du hast mir die Erleuchtung gebracht... ;-)


----------

