7
votes

Un module maven doit-il être un sous-répertoire d'un projet parent?

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>


0 commentaires

4 Réponses :


0
votes

À My Rootledge, un module doit être dans le sous-réalité du projet de parents.

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.

Si vous travaillez avec Eclipse, cette solution de contournement vous intéressera.

  • avoir le 3 projet dans votre espace de travail.
  • Assurez-vous que tous les projets sont déclarés comme projet Maven.
  • pour les deux projets ajoutez MyBridge en tant que dépendance.
  • pour les deux projectoires Cliquez avec le bouton droit de la souris oh leur projet, puis choisissez Maven -> Activer la résolution de l'espace de travail.

    Ainsi, à la place de la lecture de votre référentiel, Eclipse reliera la superficialité MyBridge avec celle de votre espace de travail Eclipse.

    Chaque fois que vous modifiez MyBridge, les deux autres projets seront touchés.

    Peut-être qu'il y a une meilleure façon, je ne suis pas le plus gros expert de Maven.

    Cordialement.


0 commentaires

6
votes

La manière habituelle d'utiliser une telle dépendance est de définir une dépendance qui entraîne une dépendance: xxx

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).

L'autre solution serait d'utiliser un véritable projet multi-module qui ressemblerait Ceci: xxx

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 xxx

et dans myProject-a, vous définissez simplement xxx

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é.


0 commentaires

4
votes

de la documentation dans le Descripteur de schéma Maven :

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.


0 commentaires

6
votes

Si nous prenons la question de savoir que dans le titre, la question est la suivante:

Un module maven doit-il être un sous-répertoire d'un projet parent?

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.

comme La réponse de Matsev ci-dessus indique clairement, "chaque module répertorié est un chemin relatif à Le répertoire contenant le module (accent ajouté) . " Il n'est pas nécessaire de ne pas être un sous-répertoire tant qu'il s'agit d'un chemin relatif de 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.


0 commentaires