J'ai examiné des projets multi-module à Maven, et je ne peux trouver que des exemples de modules existants comme sous-répertoires à un projet parent. Serais-je trompé pour déduire de cela qu'il n'ya aucun moyen de partager un module entre deux projets maven sans avoir à le conduire et à le déployer dans un référentiel? Cela me frapperait comme inutilement encombrant.
Par exemple, disons que je travaille activement sur deux projets connexes qui ne se parlent pas les uns aux autres, à l'exception d'un pont d'API, je travaille à ce que je prévois d'utiliser des choses futures . Le pont est constamment mis à jour comme un travail sur les deux projets progressifs. P>
Donc, si je veux tirer parti des modules Maven pour cet effort, un projet POM.XML ressemblerait à ceci ... p>
<groupId>net.syndog</groupId>
<artifactId>myotherproject</artifactId>
.
.
.
<modules>
<module>myproject-bridge</module>
</modules>
4 Réponses :
À My Rootledge, un module doit être dans le sous-réalité du projet de parents. P>
Pour partager votre Pont Projet, vous devez le déployer sur votre référentiel, de sorte que les deux autres peuvent avoir une dépendance à ce sujet. P>
Si vous travaillez avec Eclipse, cette solution de contournement vous intéressera. p>
Ainsi, à la place de la lecture de votre référentiel, Eclipse reliera la superficialité MyBridge avec celle de votre espace de travail Eclipse. P>
Chaque fois que vous modifiez MyBridge, les deux autres projets seront touchés. P>
Peut-être qu'il y a une meilleure façon, je ne suis pas le plus gros expert de Maven. P>
Cordialement. P>
La manière habituelle d'utiliser une telle dépendance est de définir une dépendance qui entraîne une dépendance: mais le résultat de cette approche est que vous devez avoir un projet séparé qui contient exactement cette API. Cela peut être simplifié en utilisant un IDE qui résout les dépendances entre les projets via les espaces de travail au lieu du référentiel. Sinon, vous devez effectuer régulièrement une installation MVN (si vous travaillez localement uniquement) ou un déploiement MVN (via le gestionnaire de référentiel). P> L'autre solution serait d'utiliser un véritable projet multi-module qui ressemblerait Ceci: p> où le projet-A et le projet-B utilise le pont MyProject via une simple dépendance. Dans la racine, vous définissez les modules (comme vous l'avez mentionné) via P> et dans myProject-a, vous définissez simplement p> et à myProject-b de la même manière.
Vous devez être conscient que l'utilisation d'un module ne signifie pas nécessairement de définir une dépendance. Cela vous donne également la possibilité d'utiliser le pont myProject à partir d'un projet différent complet, soit après la libération, soit en instantané. P> P>
de la documentation dans le Descripteur de schéma Maven : P>
Les modules (parfois appelés sous-projets) pour construire en tant que partie de ce projet. Chaque module répertorié est un chemin relatif du répertoire contenant le module. P> blockQuote>
Si nous prenons la question de savoir que dans le titre, la question est la suivante: p>
Un module maven doit-il être un sous-répertoire d'un projet parent? P> blockQuote>
Tant que la question concerne les projets Maven Multi-Module et non des projets hérités de Maven, puis la réponse à cette question est: "Non." Voici pourquoi. p>
comme La réponse de Matsev ci-dessus indique clairement, "chaque module répertorié est un chemin relatif em> à Le répertoire contenant le module (accent ajouté) em>. " Il n'est pas nécessaire de ne pas être un sous-répertoire tant qu'il s'agit d'un chemin relatif de em> le super-projet (j'évite les termes "parents" et "enfant" afin de ne pas impliquer le concept sans rapport d'hérité projets) au sous-projet. Cette contrainte peut être satisfaite de différentes manières qui peut être dépendante du système d'exploitation. Par exemple, vous pouvez inclure des éléments de chemin de répertoire parent (..) pour traverser le répertoire du sous-module. Ou, vous pouvez utiliser des liens symboliques. Dans tous les cas, non, il n'est pas strictement vrai qu'un module maven doit être un sous-répertoire d'un répertoire de projet multicouche Maven. P>