2010-11-25 32 views
6

Je viens de mettre en place une toute nouvelle installation d'Eclipse Helios et ai configuré M2Eclipse pour utiliser une installation externe (v 2.2.1) de Maven.Pourquoi M2Eclipse se plaint-il d'artefact manquant lorsque la ligne de commande mvn ne le fait pas?

Le système compile bien sur la ligne de commande, mais à l'intérieur m2eclipse plusieurs de mes modules de projet ont une erreur:

Missing artifact javax.jms:jms:jar:1.1:test

je peux passer l'erreur en excluant l'artefact jms des dépendances Atomikos . Mais ma question principale est de savoir comment les deux peuvent fournir des résultats différents!

Encore plus étrange est que j'ai une autre installation de Eclipse Helios et tout fonctionne bien.

Répondre

5

Le résolveur de dépendances dans m2eclipse n'utilise pas l'installation Maven externe, il doit utiliser la version Maven intégrée. Donc, je recommande d'obtenir la dernière version de m2eclipse, ainsi que la version Maven 3.x pour minimiser la différence dans la résolution des dépendances.

+0

Donc M2Eclipse utilise déjà M3 en interne? Cela semble un peu effrayant que M2 et M3 fournissent des résolutions de dépendances différentes ... mais seulement sur 1 artefact sur des centaines. Merci pour le conseil. – HDave

+2

Le problème est que le noyau Maven 2.x n'est pas vraiment intégrable. Maven 3.x intègre beaucoup de modifications pour que les composants internes fonctionnent dans l'IDE. –

+0

J'ai fait face au même problème, et j'ai pu le contourner sans avoir la dernière version de maven. Au lieu de cela, je suis allé à Preferences-> Maven-> Installations et rempli le champ marqué "Paramètres globaux pour l'installation intégrée" avec /Users/myName/.m2/settings.xml ... cela a fonctionné pour moi parce que j'ai un lien local serveur qui dessert certaines dépendances de projet qui ne sont pas disponibles publiquement. – pohl

3

De plus, il est possible que vous ayez défini d'autres référentiels dans votre fichier maven 2.2.1 conf/settings.xml. Si vous utilisez le maven3 intégré, ceux-ci seront ignorés.

Vous pouvez également spécifier l'installation de maven 2.2.1 comme installation maven pour m2eclipse.

+0

Comme je l'ai mentionné dans le message d'origine, mon installation 2.2.1 est configurée comme installation externe pour M2Eclipse. Le problème, selon Kuleshov ci-dessus est que M2Eclipse utilise son Maven3 interne pour résoudre les dépendances de toute façon. – HDave

1

Même problème ici: J'utilise Maven 2.2.1 comme l'installation d'utiliser d'éclipse, car il est celui qui fonctionne sur la ligne de commande. Maven 3 ne fonctionne pas pour ce projet concret, se plaignant de certaines dépendances manquantes qui, après de nombreuses recherches, sont dans mon cas venues de vieux dépôts de Maven 1 avec une mise en page héritée. Maven 3 les déteste et va éclater en cri quand il les trouve. Donc, maven 2 fonctionne très bien sur la ligne de commande, mais pas maven 3. Le problème avec eclipse est que même si vous spécifiez maven 2 comme installation pour construire vos projets, il utilise maven 3 (l'installation intégrée) pour la résolution des dépendances, donc si vous êtes si malchanceux d'avoir besoin d'un dépôt hérité, vous êtes foutu (je veux dire , éclipse ne va pas aider).