2013-04-05 4 views
4

J'ai un seul projet Maven qui contient les parties "core" et "web". J'essaie de le convertir en plusieurs modules.Dépendances auto-générées dans un projet multi-module Maven

J'ai pris les paquets "web" et les ai mis dans le nouveau projet. J'ai ajouté le projet de base en tant que dépendance et je peux référencer ses classes dans Eclipse. Le projet "core" apparaît correctement dans WEB-INF\lib dans le projet "web" lorsque je le construis.

Le problème survient lorsque les classes du projet "core" sont @Autowired dans le projet "web".

Dans ce cas particulier, je crée automatiquement une classe de service de "core" dans l'une des classes de service Web du projet "web". Si j'ajoute le package que le service principal est dans mon context:component-scan dans ma configuration d'application "web", il trouve ce service, mais le service fait référence à un référentiel, qui référence une entité, qui recherche une fabrique de gestionnaire d'entités que je J'ai été configuré dans mon contexte d'application dans mon projet "core".

Donc, il semble que peut-être le context:component-scan dans le projet "de base" ne se produit peut-être pas? Ou peut-être que les cours qui sont récupérés ne sont pas mis à la disposition du projet "web"? Je suis entièrement nouveau dans les projets multi-modules, donc si quelqu'un peut me mettre dans la bonne direction pour résoudre ce problème, je l'apprécierais énormément. J'utilise m2e dans Eclipse avec le plugin Run Jetty Run si cela est important; Cependant, je semble avoir les mêmes problèmes quand je fais un mvn jetty:run à partir de la ligne de commande.

Répondre

5

Vous devrez charger le contexte d'application du module principal à partir du contexte de votre application de module Web. Sinon, il ne connaîtra pas les beans définis dans le contexte de l'application principale. Jetez un oeil les réponses pour Application context from other maven module cannot be loaded et Spring import application context from another project pour les solutions appropriées.
Vous pouvez également jeter un oeil à ce post décrivant comment créer un projet Spring multi-module en utilisant Maven.

+0

Merci pour la réponse. Cela semble fonctionner. Encore une question rapide si cela ne vous dérange pas ... Est-ce la solution généralement acceptée pour ce type de modularisation? La seule raison pour laquelle je demande est parce que si je devais distribuer mon projet "de base", quelqu'un devrait connaître au moins le nom de mon contexte d'application afin de le faire fonctionner correctement. Ce n'est pas un problème dans mon cas parce que tout cela est interne, mais j'aimerais le faire de la manière la moins fragile. Existe-t-il une convention de dénomination particulière pour les contextes d'application qui devraient être chargés dans d'autres modules? – Luke

+0

Vous ne savez pas si j'exporterais le contexte de l'application. Il serait peut-être préférable de donner un bon exemple de la façon de créer un tel contexte avec les principaux services exposés par votre bibliothèque centrale et de laisser le consommateur le gérer. Ceci, avec une API clairement documentée, devrait faire l'affaire à mon avis. –

+0

Super! Merci encore. – Luke

Questions connexes