Question

Je viens de terminer la conversion d'un de nos projets cadres en interne de fourmi à Maven. La construction de Maven fonctionne très bien, et se déploie à notre dépôt sans problème.

Le problème est alors que d'autres projets tentent de consommer le cadre, il ne fonctionne pas. La seule chose est téléchargé cadre de niveau supérieur pom.

Je l'ai essayé d'ajouter des entrées de dépendance à une ou plusieurs des différents modules, mais peu importe laquelle j'ajouter, je reçois une erreur de dépendance circulaire. J'ai aussi essayé de créer un 2ème niveau supérieur fichier pom sans modules et quelques dépendances pour remplacer celui du gestionnaire de référentiel. Cela provoque quelques-unes des dépendances à télécharger, mais le build Maven se bloque dans des endroits aléatoires. basé sur le gestionnaire de fenêtres de tâches, il ressemble à son dans une boucle sans fin. Ainsi, un 2ème fichier pom ne semble pas être la réponse (ou im faire mal).

mon fichier pom-cadre ressemble à quelque chose comme ceci:

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>framework_snt</groupId>
  <artifactId>SFP</artifactId>
  <packaging>pom</packaging>
  <name>SFP framework</name>
  <version>6.3</version>

  <modules>
.... 50+ modules here
  </modules>

et les propriétés habituelles, la gestion des dépendances et des entrées pluginManagement pour un niveau supérieur pom.

dans le module consommant que je viens de ce qui suit:

<dependency>
  <groupId>framework_snt</groupId>
  <artifactId>SFP</artifactId>
  <version>6.3</version>
  <type>pom</type>
</dependency>

Ceci est le niveau supérieur pom donc tous les sous-modules ont accès aux bibliothèques cadres pour faciliter les développeurs.

Comment puis-je configurer les choses de façon si tous les fichiers jar dépendants seront téléchargés par mes projets consommant?

Était-ce utile?

La solution

Il semble que votre projet cadre produit plusieurs artefacts de pot, un pour chaque module enfant, mais aucun artefact de pot pour le projet parent. Ainsi, la déclaration d'une dépendance à l'égard de la pom du projet parent n'est pas ce que vous voulez faire. Au lieu de cela, vous devez déclarer une dépendance sur chacun des modules enfants de votre projet-cadre.

J'ai une configuration similaire où j'ai un projet de « boîte à outils » avec plusieurs modules (chacun produisant un artefact de pot). Puis, dans mes autres projets que je déclare dépendances quels qu'en soient les modules que je dois utiliser. Je ne suis pas, cependant, déclare une dépendance à l'égard de mes projets mères « boîte à outils » fichier pom. Au lieu de cela, je déclare que les dépendances sur les objets jar modules enfant.

<dependency>
  <groupId>com.mycompany.toolkits</groupId>
  <artifactId>file-utils</artifactId>
  <version>1.0.0</version>
</dependency>

Notez que mes points de déclaration de dépendance à l'un de mes déclarer ce module enfant et ne pas <type>pom</type> comme vous l'avez fait. Si vous voulez être vraiment explicite vous pouvez déclarer <type>jar</type> à la place.

Autres conseils

Le pom framework comme vous l'appelez est la pom parent de votre projet multi-modules.

Alors que les modules peuvent dépendre les uns des autres, il ne peut pas dépendre de cette pom-mère. C'est ce qui est peut-être à l'origine de la dépendance circulaire.

Vous aurez besoin de relooker vos modules et identifier les modules qui dépendent et spécifiez convenablement les dépendances. En outre, ces dépendances sont généralement dépendances jar - un emballage qui contiendra des sources et ressources

.

Maven Par exemple est l'une des nombreuses ressources disponibles ce qui donne de plus amples informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top