Maven ne parvient pas à trouver des locaux artefact
Parfois maven se plaint que l'un particulier de dépendance, qui est construit et conditionnés localement, ne peut pas être trouvé dans le dépôt local lors de la construction d'un autre projet qui a comme une dépendance. Nous obtenons une erreur de ce type:
Échec de l'exécution de l'objectif sur le projet X: impossible de résoudre les dépendances pour le projet X: l'incapacité à trouver Y dans [archiva référentiel] a été mis en cache dans le référentiel local, la résolution ne sera pas reattempted jusqu'à ce que l'intervalle de mise à jour de l'intérieur s'est écoulé ou les mises à jour sont forcé ->
Où X est le projet en cours de construction, et Y est le soi-disant artefact manquant. Si vous regardez dans le dépôt local, l'artefact est là. Cet artefact est jamais installé dans notre archiva référentiel, de sorte que le problème est purement basée dans le référentiel local.
Nous avons essayé différents profils settings.xml et bien sûr "mvn -U". Ni faire quelque chose de bon, et ils ne devraient pas parce que cet artefact ne va jamais plus loin que le dépôt local.
Les deux seules choses qui semblent des travaux sont à attendre très longtemps jusqu'à ce que maven smartens, ou pour supprimer complètement le référentiel local. Sans doute l'option de mise en attente est liée à ladite intervalle de mise à jour.
Nous avons connu ce problème avec maven 3.0.2 et 3.0.3. Nous sommes à l'aide de Archiva 1.0.3 (mais encore une fois cela ne devrait pas être un facteur). Toute aide serait grandement appréciée.
- Est Maven rien journalisation pendant ou juste avant le "en attente?" I. e. est-il en tentant de se connecter à un inaccessible référentiel? Également, la problématique des artefacts "INSTANTANÉ"?
- Maven ne vous connectez pas autre chose que l'erreur que j'ai mentionné ci-dessus. Et oui, c'est un instantané de la dépendance.
- Voir stackoverflow.com/questions/1348603/...
- Avez-vous installé le construire paquet avant d'essayer de construire le deuxième projet?
- J'aime la façon dont le message d'erreur run-bien sur, pas une phrase grammaticalement correcte. De cette façon, nous ne savons pas pour sûr, si il ne peut pas trouver ou Y si Y a été mis en cache localement, ou les deux. De toute façon, j'ai un problème similaire. J'ai été en mesure de le résoudre avec l'option-U parce que mon dépendances sont dans mon intérieur de la société des pensions. Pourquoi ne sont pas les objets que vous devez déployés à l'interne de votre entreprise référentiel?
- Pour ce genre de problème, il est toujours utile de vérifier que vous êtes réellement à la recherche pour la version correcte. Vous pouvez utiliser
mvn dependency:resolve
(maven.apache.org/plugins/maven-dependency-plugin/...) pour vérifier que les dépendances spécifiques sont disponibles, etmvn help:effective-pom
pour afficher les pom que c'est quand maven s'exécute, c'est à dire y compris tout le contenu héritées du parent de chrysanthèmes et autres (maven.apache.org/plugins/maven-help-plugin/...) - Il est possible que la même version de Y (l'artefact manquant) est également en cours de re-construit lorsque vous essayez de construire X. Donc, dans ce cas, il est fortement probable que le référentiel n'a pas encore mis à jour la composante Y et donc construire de X échoue. Pour être sûr - essayez de faire mvn install de l'objet, il Y localement dans le système de génération. Et puis commencer à les construire de X.
Vous devez vous connecter pour publier un commentaire.
Le local Maven pensions de pistes où les artéfacts vient à l'origine à l'aide d'un fichier nommé "_maven.les référentiels" dans le répertoire d'artefacts. Après l'avoir supprimé, l'accumulation travaillé. Cette réponse résolu le problème pour moi.
aether.enhancedLocalRepository.trackingFilename=some_dummy_file_name
à la dépendance du processus de résolution; plus simple est d'ajouter un-D le système de propriété à l'invocation de la commande.Que les options ne fonctionne pas pour moi, je suis le partage de comment je l'ai résolu:
Mon projet est un projet parent (avec sa propre pom.xml) qui a de nombreux enfants modules dont un (Une) a une dépendance à un autre enfant (B). Quand j'ai essayé
mvn package
dans Un, ça n'a pas fonctionné parce que B n'a pas pu être résolu.L'exécution de
mvn install
dans le répertoire parent a fait le travail. Après cela, je pourrais fairemvn package
à l'intérieur de l'Un et alors seulement, il pourrait trouver B.Même en mode hors connexion, maven va vérifier les dépôts distants si il y a un _remote.les référentiels de marqueur pour la dépendance. Si vous avez besoin de fonctionner en mode hors connexion, vous devrez peut-être supprimer ces fichiers.
La simple commande shell ci-dessous supprime ces fichiers de marquage. C'est sûr, à faire si vous utilisez uniquement le mode hors connexion pour la machine. Je ne voudrais PAS le faire sur une machine qui a besoin extraire les fichiers à partir du web.
J'ai utilisé cette stratégie sur un serveur de build qui est déconnecté du web. Nous devons transférer le référentiel, supprimez les fichiers de marquage et ensuite l'exécuter en mode hors connexion.
Sur Linux /Unix, vous pouvez supprimer le dépôt distant marqueur des fichiers de cette façon:
_remote.repositories
fichier en passant-Daether.enhancedLocalRepository.trackingFilename=some_dummy_file_name
pour le processus. (N'essayez pas de le Maven build, mais fonctionne lors de l'invocation de Maven par programme; ainsi, l'ancien devrait aussi fonctionner)Maven se souvient du moment où il ne trouve pas quelque chose. La clé, c'est "la résolution ne sera pas reattempted jusqu'à ce que l'intervalle de mise à jour de l'intérieur s'est écoulé ou les mises à jour sont forcé ->"
La solution rapide est de le supprimer de votre région "référentiel" sous-répertoire pour le problème de l'artefact en supposant que vous avez résolu le problème avec elle. 🙂
mvn -U
va forcer la mise à jour d'un dépôt distant - encore une fois, en supposant que vous avez maintenant peuplée à distance avec l'artefact.Lorsque cela m'est arrivé, c'était parce que j'avais aveuglément copié mon settings.xml à partir d'un modèle et qu'il avait encore le vide
<localRepository/>
élément. Cela signifie qu'il n'y a pas de référentiel utilisé lors de la résolution des dépendances (si vous avez installé les artefacts ne toujours se mettre dans l'emplacement par défaut). Quand je l'avais remplacé qu'avec<localRepository>${user.home}\.m2\repository</localRepository>
il a commencé à travailler.Pour *nix, qui serait
<localRepository>${user.home}/.m2/repository</localRepository>
, je suppose.Que je lance le même problème lors de mon nouveau projet dépendent de l'oracle jdbc pot(que j'ai installé dans mon dépôt local et bien travailler pour d'autres projets). J'ai essayé l'option-U ,la suppression de .lastupdate fichier ou l'ensemble du répertoire et de télécharger à nouveau,mais cela n'a pas fonctionné. enfin,j'ai supprimé le répertoire et installé localement encore,il fonctionne.
L'une des erreurs que j'ai trouvé autour de Maven est quand j'ai mis mon settings.xml de fichiers dans le mauvais répertoire. Il doit être dans .m2 dossier en vertu de l'utilisateur de votre répertoire home. Assurez-vous que c'est au bon endroit (avec settings-security.xml si vous utilisez cette).
J'avais
DependencyResolutionException
dans Ubuntu Linux quand j'ai installé artefacts locaux par l'intermédiaire d'un script shell. La solution a été de supprimer les artefacts locaux et de les installer de nouveau "à la main" - appelmvn install:install-file
via un terminal.Même j'ai été confronté à ce problème et résolu avec 2 façons:
1) Dans votre IDE et sélectionnez le projet propre de tous les projets puis d'installer toutes les dépendances maven par un clic droit sur le projet -> aller à maven et mettre à Jour les dépendances d'un projet, sélectionnez tous les projets à la fois d'installer la même chose. Une fois cela fait exécuter le projet particulier
2) d'Autre Ce que vous pouvez faire est de vérifier dans la pom.xml pour les dépendances pour laquelle vous obtenez l'erreur et "mvn clean install" ceux dépendante projet première et installer les dépendances maven du projet en cours, qui vous face à problème. Par cela, les dépendances du projet local et les pots seront créés.
S'il vous plaît essayer cette commande.
mvn valider