Maven: Archetype für JSF-Spring Projekt

mschlegel

Erfahrenes Mitglied
Hallo ihr Maven-Spezialisten

Ich habe mich jetzt schon eine Weile in Spring und JSF eingearbeitet und möchte jetzt ein kleines Projekt starten. In einem der Tutorial habe ich die Vorzüge eines vernünftigen Builds kennen gelernt (es handelte sich um Ant).

Maven steht schon seit einiger Zeit auf meiner Liste, allerdings sind mir die vorhandenen Archetypes teilweise viel zu umständlich. Da werden zig Ordner angelegt und verlinkt und viel zu viele Bibliotheken heruntergeladen. Ich hatte beispielsweise den appfuse-spring-jsf archetype versucht aber auch hier war ich nicht wirklich zufrieden.

Mir gefällt die Projektstruktur von Eclipse recht gut, vor allem die Editoren für JSF und JPA (sprich die Project Facets). Gibts es eine Möglichkeit eine solche Projektstruktur aufzubauen aber zusätzlich noch mit dem Ordner für Tests. Was die Dependencies betrifft, so reicht es doch völlig nur die nötigsten hinzuzufügen (Spring-Core, JSF, Servlet, JSTL).

Schonmal Danke im voraus.
 
Machs doch von Hand. Ein einfacher Webapp Archetype tuts. Wenn du die Spring und JSF dependencies von Hand nachträgst. Einen Tod musst du sterben, entweder das was zuviel ist weglöschen oder das nichtvorhandene händisch hinzufügen.

Ich würde mich übrigens lieber an die Mavenordnerstruktur halten bzw. gewöhnen. Sonnst musst du das Mavenprojekt selbst recht umständlich konfigurieren. Mit m2eclipse ist das übrigens relativ einfach auch in Eclipse handzuhaben.

Gruß
Ollie
 
Danke

Das m2eclipse hab ich schon, allerding konnte ich dort keine importfunktion für ein POM finden. So dass er mir dann automatisch das Projekt anlegt...werd ich dann wohl über die Komandozeile machen müssen.

Was die Editoren betrifft, so muss ich Eclipse ja nur sagen "Öffnen mit..." ;-) da hab ich gestern nicht mehr dran gedacht (war wohl schon etwas zu spät)

Das einzige was mich jetzt noch interessieren würde, macht es Sinn die Projekte aufzuteilen. Also z.B. Spring als Backend in ein Projekt und JSF als Frontend in ein anderes? Wichtig ist mir dass die JSF managed beans über den SpringELResolver bezogen werden können.
 
Hm, was gefällt dir an File -> Import -> General -> Maven Project nichtß ;). Projektaufteilung ist immer gut. Ich würde versuchen im Webprojekt wirklich nur das Webfrontend zu halten und daneben normale Javarojekte zu haben, die alles ab Servicelayer abwärts beinhalten. So kann man auch prima Dependencies managen, also sicherstellen, dass z.B. im Servicelayer kein Servletcode verwendet usw. Sowas kann man recht detailliert machen. Ich sitz grad an einem Projekt dass aus 38 Eclipseprojekten besteht ;)...

REINHAUN!
 
Ich sitz grad an einem Projekt dass aus 38 Eclipseprojekten besteht ;)...
Sowas hatte ich bis jetzt nur bei einem RCP-Project wo für jedes Plugin noch ein Feature vorhanden war.

Soll das heißen für jeden Service ein einzelnes Projekt? Oder wie kommt man sonst auf so viele Projekte?
Auch wenn es sich bei meiner Idee nur um etwas kleines handelt um die Technologien zu lernen, möchte ich doch trotzdem von Anfang an eine Projektstruktur nutzen/aufsetzen die sozusagen best-practise ist...daher die ganze Fragerei ;)

Nochmals Danke
 
Kein Thema. Ich denke 38 Projekte ist die Ausnahme. Wir unterteilen in ein Rumpfsystem, was durch Plugins erweiterbar ist. D.h. allein durch die Plugins haben wir 10 Projekte. Das Rumpfsystem selbst ist in 3 Subsysteme unterteilt, die jeweils aus API, Implementierung und ein spezielles Projekt mit den Klassen die die Plugins nutzen dürfen bestehen. Dies ist zum einen deswegen so, damit die Subsysteme untereinander nur über die Typen in den Interfaceprojekten kommunizieren. Zum anderen sollen halt die Plugins nur über dedizierte Schnittstellen das Rumpfsystem erweitern.

Hinzu kommt natürlich ein Coreprojekt mit gemeinsamen Datentypen und dem Domänenmodell. Darüber hinaus gibt es ein paar Maven Parent projekte, um die Konfiguration zu vereinfachen. Dazu wiederum kommen Webprojekte, die dann das Rumpfsystem mit den Plugins zusammenführen (2 an der Zahl) + jeweils ein EAR, weil die Adminstration lieber EARs deployt als WARs.

So kommt man recht schnell auf so eine Anzahl an Projekten. Der Grund für so eine Feingranulare Aufteilung ist zum einen das dedizierte Abhängigkeitsmanagement, zum anderen, dass Subsysteme aus dem Rumpfsystem von verschiedenen anderen (fachlichen) Projekten hier im Haus mitgenutzt werden. Die möchten natürlich auch so wenig wie möglich Code als Dependency.

Gruß
Ollie
 
Ich muss nochmal nachhaken :rolleyes:

Ich habe mir aus den vorhandenen Archetypes mal eine simple Projektstruktur aufgebaut (ein parent, mit web und einem core Modul). Alles ziemlich simpel, ohne irgendwelche großartigen Dependencies oder sonstiges.

Beim import hat er jetzt aber bis auf target, keine Ordner angelegt. Es sollen ja src/main und src/test zumindest dabei sein. Also nochmal fix einen simplen Archetyp heruntergeladen und über den Wizard anlegen lassen und danach das pom.xml betrachtet. Die Ordner müssen anscheinend nicht angegeben werden...ich dachte schon ich bin total blöde, also hab ich dann dieses pom.xml
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>web</groupId>
  <artifactId>ads</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>ads Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>ads</finalName>
  </build>
</project>
welches von dem Archetyp stammt importiert und siehe da, wieder keine Ordner.
Also fix das Contextmenu von Maven abgeklappert aber da finde ich nichts.

Wie bekomm ich jetzt mittels import in Eclipse die Quell-/Resourcenordner rein. Anscheinend erkennt maven ja, dass beim packaging "war" ein webapp Ordner dazu gehört...zumindest wenn ich diese archetypes benutze, anders kann ich mir dieses minimale xml nicht erklären.
 
Zuletzt bearbeitet von einem Moderator:
Rechtsklick aufs Projekt -> Maven -> Update project configuration. Dann sollte er die entsprechenden Ordner als Sourceordner definieren.

Welche Version von m2eclipse hast u installiert? 0.9.6 war recht buggy. Man kann bequem die 0.9.1 aus der update-dev Updatesite installieren.

Gruß
Ollie
 
Also da tut sich nix. Außer dass ich jetzt immer die Fehlermeldung bekommen
Code:
Dynamic Web Module 2.5 requires Java 5.0 or newer.
In den Einstellungen gebe ich Java 1.6 vor, aber nachdem das Project importiert wurde steht in den Eigenschaften Java 1.4. Aber selbst wenn ich das manuell auf 1.5 oder 6 änder, so bleibt die Fehlermeldung erhalten.

Mit der Version lagst du richtig, ich hatte 0.9.6, hab mir jetzt die Dev-Update Site hinzugefügt aber da konnte ich nur 0.9.7 auswählen (0.9.1 konnte ich nicht finden) :-(

Ich habe auch alle versteckten .classpath und .project, sowie den Ordner .metadata gelöscht bevor ich importiert habe.

Sorry für die Umstände :rolleyes:
 
Mit m2eclipse gilt: die pom.xml ist das Godfile. D.h. trag dort das Compiler plugin ein, setz source und target auf 1.5, Rechtsklick auf das Projekt -> Update Project configuration.

Buildpath und compilereinstellungen braucht man über die Eclipsedialoge nicht mehr zu konfigurieren.

Gruß
Ollie
 
Zurück