Question

À l’heure actuelle, j’ai deux projets Eclipse: ils utilisent tous les deux Maven 2 pour tous les avantages qu’ils tirent de jar-dependency.

Dans Eclipse, le projet Foo est inclus dans le chemin de construction du projet Bar, afin que je puisse utiliser les classes de Foo du projet Bar. Cela fonctionne très bien dans Eclipse Land, mais lorsque j'essaie:

mvn compile 

Dans le répertoire de Bar, cela échoue car Maven ne connaît pas la relation de projet à projet dans le chemin de construction d'Eclipse.

Si j'utilisais Ant, je l'utiliserais simplement pour faire quelque chose de ridicule, comme copier foo.jar dans le classpath du projet Bar, mais pour autant que je sache, les choses se font beaucoup moins de façon furtive dans Maven-land.

Je me demande s'il existe une solution de contournement standard pour ce type de problème: il semble que ce soit assez courant et qu'il me manque quelque chose de fondamental sur le fonctionnement de Maven.

Était-ce utile?

La solution

Vous faites peut-être référence à l'autre projet via Eclipse configure- > construire le chemin seulement. Cela fonctionne tant que vous utilisez Eclipse pour construire votre projet.

Essayez d'exécuter la première installation de mvn dans la barre de projet (afin de placer Bar dans votre référentiel Maven), puis ajoutez la dépendance au pom.xml de Foo.

Cela devrait fonctionner!.

Autres conseils

Consultez le plug-in m2eclipse . Il mettra à jour automatiquement et dynamiquement le chemin de génération du projet lorsque vous modifierez le pom. Il n'est pas nécessaire d'exécuter mvn eclipse: eclipse .

Le plugin détectera également si une dépendance est dans le même espace de travail et ajoutera ce projet au chemin de génération.

Idéalement, si vous utilisez m2eclipse, vous ne modifierez jamais manuellement le chemin de génération du projet. Vous devez toujours modifier pom.xml à la place, ce qui est le moyen approprié de le faire.

Comme cela a été indiqué précédemment, Maven ne saura rien du chemin de génération du projet Eclipse. Vous devez ajouter toutes les dépendances au pom et vous assurer que toutes les dépendances sont d'abord créées et installées en exécutant mvn install .

Si vous voulez construire les deux projets avec une seule commande, vous pouvez trouver agrégation de projets intéressante.

Vous pouvez essayer une approche alternative dans laquelle vous avez un projet parent maven et un projet deux enfants. disons:

Parent (pom.xml fait référence à des projets / modules enfants)  - > A (dépend de B)  - > B

puis, lorsque vous exécuterez mvn eclipse: eclipse à partir de la racine de Parent, maven générera des projets eclipse pour A et B, et il aura B comme projet requis dans le chemin de classe de A.

Vous pouvez exécuter l’installation mvn à partir de la racine de Parent pour que les deux projets soient compilés.

Pour terminer votre configuration, vous devez importer A et B dans Eclipse en veillant à ne pas cocher la case "Copier les projets dans l'espace de travail".

J'avais juste besoin de faire cela et j'avais besoin de le construire avec la commande externe mvn clean install. Voici la bonne façon de configurer cela dans Eclipse. (Avec le projet B comme dépendance de A)

  1. Ouvrez le fichier pom.xml du projet A dans Eclipse.
  2. Accédez à l'onglet Dependencies .
  3. Cliquez sur le bouton Ajouter ... au milieu de la page (pour la zone Dépendances de gauche)
  4. Dans la fenêtre contextuelle, il devrait y avoir une boîte sous une ligne avec du texte au-dessus indiquant Entrez groupId, artifactId ou sha1 préfixe ou modèle (*): . Entrez l'ID d'artefact du projet B dans cette case.
  5. Double-cliquez sur le fichier que vous souhaitez ajouter comme dépendance à ce projet.
    1. Vous devrez peut-être mettre à jour le projet après.
    2. Faites un clic droit sur le projet A dans votre explorateur de packages
    3. Maven - > Mettre à jour le projet ...
    4. Cliquez ensuite sur OK dans la fenêtre contextuelle.

Je pense que le meilleur moyen de le gérer est de faire de Bar un projet Maven comme Foo, puis de mvn l’installer afin qu’il soit disponible dans votre référentiel Maven local. L'inconvénient est que vous devez installer ce projet à chaque fois que vous souhaitez que Maven voie les modifications apportées à Bar.

Pas une réponse complète:
Le pom de Bar doit inclure Foo afin d’utiliser maven pour le compiler.
Cette question m'intéresse également, mais du point de vue de la façon de faire reconnaître par Eclipse une dépendance ajoutée par Maven, il s'agit en réalité d'un autre projet dans le même espace de travail. Je modifie actuellement le chemin de génération après avoir exécuté mvn eclipse: eclipse

Si vous faites référence à un projet local, mais que sa version a été mise à jour (généralement augmentée), il pourrait peut-être uniquement être trouvée dans votre référentiel local et vous devez en mettre à jour la version (probablement corrigée) dans votre ou vos POM. .

Nous avons un "projet commun". (utilisé partout) qui ne nécessite pas forcément de version, car nous le taguons via le contrôle de source. alors soit

  • le garder à une version fixe ou
  • le référençant avec la version spéciale LATEST

sont de bonnes solutions de contournement pour être toujours du côté de la sécurité.

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