Maven, Spring configuration multi-modules de projet
Je suis désireux de mettre en place un multi module maven du projet (décrit ci-dessous) qui sera mise à l'échelle. J'ai quelques questions à propos de la démarche qui est en grande partie tirée de la Sonatype exemple.
J'ai fait une certaine quantité de lecture sur maven multi projets de module, mais ne pouvait pas trouver un exemple aller au-delà du niveau de base.
Questions:
- Est-ce (ci-dessous) un bon projet de structure pour commencer? Ou faut-il l'odeur de la catastrophe dès le début - c'est à dire conduirait à une forte restructuration lors de la configuration construit? En bref, je suis à la recherche pour éviter de mettre en place quelque chose qui va à l'encontre du grain avec Maven.
- Je m'attends à ce que certains modules pour être tout à fait indépendant, alors que la plupart seront intimement liés. Est-il bon de commencer avec chaque module comme un repo Git et, plus tard, refactoriser dans l'ensemble des modules qui sont étroitement liés?
Objectifs:
- Bonne structure de projet pour une modulaire Printemps, JSF2, Maven en fonction du projet, qui permettrait construit impliquant un choix de modules et de leurs dépendances.
- Il devrait être possible de déployer un individu module web sur un conteneur léger comme Tomcat/Jetty grâce à Maven de configuration (comme jetty-maven-plugin). Ce devrait être en mesure de tirer dans les dépendances requises par Maven. Qui le rend facile en cours de développement pour se concentrer sur le module en cours d'élaboration (ne pas avoir à faire un plein de génération et de déploiement) et de déployer l'application que dans une construction complète.
- Le programme d'installation devrait permettre de multiples distributions basées sur une sélection de modules à inclure dans la construction. Je le prends ceci peut être réalisé grâce à l'utilisation de construire des modules de traction et d'emballage des modules correspondants.
Structure de projet
Core domain classes.
somapp.core (maven project)
|- someapp.core (maven module)
|- someapp.core.tests
Account Management Domain classes
someapp.accountmgmt
|- someapp.accountmgmt
|- someapp.accountmgmt.tests
component1 domain classes
someapp.component1
|- someapp.component1
|- someapp.component1.tests
Service 1 - # account management (User login)
someapp.accountmgmt
|- someapp.accountmgmt.api
|- someapp.accountmgmt.impl
|- someapp.accountmgmt.mocks
|- someapp.accountmgmt.tests
someapp.service2
|- someapp.service2.api
|- someapp.service2.impl
|- someapp.service2.mocks
|- someapp.service2.tests
|- someapp.service2.cli # CLI access for service2
someapp.service3
|- like above
someapp.accountmgmt.web
|- someapp.accountmgmt.web
someapp.service2.web
|- someapp.service2.web
someapp.service3.web
|- someapp.service3.web
someapp.build1 # bundle accountmgmt and service2 into 1 war file
someapp.build2 # bundle accountmgmt and service3 into 1 war file
somapp.build3 # bundle accountmgmt, service2 and service3 into 1 war file
(i.e. someapp.accountmgmt.web.war, someapp.accountmgmt.jar, someapp.service2.web.war, someapp.service2.jar, someapp.service3.web.war, someapp.service3.jar, someapp.core.jar)
Je comprends structures de projet ne sont pas définies dans la pierre. Je tiens à mettre en place un qui est un bon point de départ. Des Suggestions et des Liens vers des exemples sont les bienvenus.
OriginalL'auteur JetStream | 2013-03-14
Vous devez vous connecter pour publier un commentaire.
Bien pour le Printemps, c'est déjà discuté, et une réponse acceptée à Printemps de Configuration dans un environnement multi-projet de module. Aussi loin que la disposition générale j'ai seulement vu une GUERRE par projet et services regroupés s'ils sont liés (par exemple, UserLoginService ne serait pas aller de pair avec DomainObjectsService).
Je suggère de rupture de la structure dans plusieurs projets différents, avec dépendances (business objects, etc) déployés en tant que POT de projets pour un local repo et répertorié comme normal dépendances Maven dans le (maintenant) les projets qui en ont besoin. Ensuite dans votre application-serveur, vous pouvez déployer les applications vers des chemins différents (par ex. yourdomain.com/app1, yourdomain.com/service2).
Mes compliments à votre ambition!
EDIT: Il y a un moyen d'avoir de multiples Guerres si vous le souhaitez, voir ce SpringSource billet de blog sur À l'aide d'un parent commun de contexte de l'application dans un environnement multi-guerre Printemps application.
OriginalL'auteur Michael Gower