Ich bin auf der Suche nach einem Multi-Modul Maven-Projekt (unten beschrieben), das gut skalieren würde. Ich habe einige Fragen zu dem Ansatz, der weitgehend aus dem Sonatypebeispiel stammt.
Ich habe eine gewisse Menge an Maven-Multi-Modul-Projekten gelesen, konnte aber kein Beispiel finden, das über das Grundlevel hinausgeht.
Gute Projektstruktur für ein modulares Spring, JSF2, Maven-basiertes Projekt, das Builds mit einer Auswahl von Modulen und deren Abhängigkeiten ermöglichen würde.
Es sollte möglich sein, ein einzelnes Web-Modul auf einem leichtgewichtigen Container wie Tomcat / Jetty durch Maven-Konfiguration (wie Jetty-Maven-Plugin) zu implementieren. Dies sollte in der Lage sein, die notwendigen Abhängigkeiten durch Maven zu ziehen. Dies erleichtert es, sich während der Entwicklung auf das zu bearbeitende Modul zu konzentrieren (ohne einen vollständigen Build und eine vollständige Bereitstellung ausführen zu müssen) und die vollständige Anwendung nur in einem vollständigen Build bereitzustellen.
Das Setup sollte mehrere Distributionen ermöglichen, basierend auf einer Auswahl von Modulen, die im Build enthalten sein sollen. Ich nehme an, dass dies durch die Verwendung von Build-Modulen erreicht werden kann, die die entsprechenden Module ziehen und verpacken.
Ich verstehe, dass Projektstrukturen nicht in Stein gemeißelt sind. Ich würde gerne eine solche gründen, die ein guter Ausgangspunkt ist. Vorschläge / Links zu Beispielen sind willkommen.
Nun für den Frühling Teil ist es bereits diskutiert und eine Antwort akzeptiert bei Spring-Konfiguration in einem Multi-Modul-Projekt . Was das allgemeine Layout anbetrifft, so habe ich nur ein WAR pro Projekt und Services gesehen, die nur zusammen gebündelt wurden, wenn sie zusammengehören (z. B. würde UserLoginService nicht mit DomainObjectsService zusammenpassen).
Ich würde vorschlagen, die Struktur in mehrere verschiedene Projekte aufzuteilen, wobei die Abhängigkeiten (Geschäftsobjekte, etc.) als JAR-Projekte in einem lokalen Repo deployt und als normale Maven-Abhängigkeiten in den (jetzt verschiedenen) Projekten aufgeführt sind, die sie benötigen. Dann können Sie die Apps in Ihrem App-Server auf verschiedene Pfade verteilen (z. B. IhreDomain.com/app1, IhreDomain.com/Service2).
Mein Kompliment zu Ihrem Ehrgeiz obwohl!
BEARBEITEN: Es gibt eine Möglichkeit, mehrere WARs zu haben, wenn Sie es wünschen. Sehen Sie sich diesen SpringSource-Blogpost an Verwenden eines gemeinsamen übergeordneten Anwendungskontexts in einer Spring-Anwendung für mehrere Kriege .
Eine Hierarchie, die mit Spring IO bis zu Ihren Artefakten beginnt, kann als ein einzelnes Multi-Modul-Projekt erstellt werden.
%Vor%Spring IO ist BTW wirklich gut als eine gesegnete Reihe von Abhängigkeiten, die gut zusammenarbeiten und Classloader-Probleme vermeiden. Es lohnt sich, Ihr Projekt zu migrieren, um es als neueste Version zu verwenden, es sieht ziemlich aktuell aus. Ich empfehle auch Spring Boot für Ihre Web-App (s).
Wie gesagt, es lohnt sich, all Ihre App-bezogenen Module so zu erstellen, dass die Versionierung einfacher ist und Sie alles in einem einzigen Build-Befehl testen können. Ich habe kürzlich an einem Projekt gearbeitet, bei dem wir alle diese Module getrennt halten, und es bedeutet nur 4x den Aufwand, Änderungen zusammenzuführen, Artefakte zu erstellen, Artefakte zu implementieren usw.