2011-03-17 2 views
0

Lors de l'exécution de la dépendance mvn: les dépendances de copie dans un projet multi-module, il semble que mvn s'attend à ce que les jars soient déjà installés dans .m2/repo. Peut-être que je manque quelque chose mais je ne peux pas comprendre le sens ...
Cette question est quelque peu similaire à Maven: Why does it need dependency modules' .jars for `mvn initialize`? mais elle est plus spécifique au plugin de dépendance (je suppose ...) et la question mentionnée ne t ont une bonne réponse, au moins aucun qui me aide ...Le plugin de dépendance mvn nécessite l'installation de jars?

J'ai un projet multi-modèle dans lequel MODA dépend de Modb
maintenant, je veux courir

mvn dependency:copy-dependencies -am -pl modA 

Cela devrait copier tous les dépendances de modA et tous les modules dont il dépend, par exemple, aussi de modB

Le problème est que si .m2/repo ne contient pas le jar de modB alors le plugin échoue ... pourquoi? Drôle, si je crée juste un fichier "jar" vide à .m2/repo/à l'endroit approprié, il suffit que le plugin réussisse donc cela prouve juste que je ne regarde même pas le contenu du pot , mais il faut encore qu'il soit en place. WTF? ...

Première question - pourquoi?
Deuxième question - comment contourner le problème sans avoir à vraiment générer les pots ou les "toucher"? (J'ai beaucoup et ce n'est pas pratique ...)

Mise à jour: OMG, je viens de réaliser que j'ai oublié d'ajouter une pièce de valeur ... Je ne veux pas que modB soit copié donc j'ai effectivement exclu son identifiant d'artefact de la commande, il était en fait:

mvn dependency:copy-dependencies -am -pl modA -DexcludeGroupIds=mod.b.group.id 

J'ai même essayé:

mvn dependency:copy-dependencies -am -pl modA -DexcludeArtifactIds=modB 

donc, si je ne l'avais pas fait cela alors il est totatlly sens que le plugin chercherait Modb dans le repo, mais Puisque modB est exclu alors je m'attendais à ce que le plugin n'exige pas que modB.jar soit présent.
Eh bien, peut-être que cette question doit juste être un rapport de bug ...

Répondre

0

Pourquoi? Je suppose que c'est ce que la commande est censée faire - copier les dépendances et échouer si elles n'existent pas. Le plugin n'est pas concerné par l'intégrité des artefacts. Un moyen de contourner cette option pour les groupes/projets sélectionnés serait d'utiliser les paramètres excludeGroupIds et excludeArtifactIds du plugin.

+0

Je suis désolé, mais j'ai oublié d'ajouter le morceau le plus précieux ... Jetez un oeil à ma mise à jour dans la question. J'ai effectivement exclu modB volontairement de la commande de copie, mais cela n'a pas fonctionné comme prévu. – Ran

Questions connexes