Avec maven, je frappe occasionnellement un artefact provenant d’un référentiel tiers que je n’ai pas encore construit ou inclus dans mon référentiel.
Je vais recevoir un message d’erreur du client Maven disant qu’un artefact est introuvable:
Échec de la recherche de org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 dans
http://myrepo:80/artifactory/repo
été mis en cache dans le repository local, la résolution ne sera pas tentée avant l’intervalle de mise à jour de MyRepo s’est écoulé ou les mises à jour sont forcées -> [Aide 1]
Maintenant, je comprends ce que cela signifie, et je peux simplement ré-exécuter ma commande avec -U
, et les choses fonctionnent généralement bien à partir de là .
Cependant, je trouve ce message d’erreur extrêmement peu intuitif et j’essaie d’épargner des problèmes à mes collègues.
J’essaie de savoir s’il existe un endroit où je peux modifier ce paramètre d’ update interval
mise à update interval
.
update interval
mentionné dans ce message d’erreur est-il un paramètre côté client ou côté serveur? J’avais l’habitude de résoudre ce problème en supprimant le répertoire d’artefacts correspondant à mon repo local. La prochaine fois que je lance la commande maven, le téléchargement de l’artefact est à nouveau déclenché. Par conséquent, je dirais que c’est un côté client.
Côté Nexus (côté repo du serveur), ce problème est résolu en configurant une tâche planifiée. Côté client, cela se fait en utilisant -U
, comme vous l’avez déjà souligné.
vous pouvez supprimer le répertoire d’artefacts en échec correspondant dans votre référentiel local. Et aussi, vous pouvez simplement utiliser le -U
dans le but. Cela fera le travail. Cela fonctionne avec maven 3. Donc pas besoin de rétrograder à maven 2.
J’ai eu un problème connexe, mais la réponse de Raghuram m’a aidé. (Je n’ai pas encore assez de réputation pour voter sa réponse). J’utilise Maven fourni avec NetBeans, et j’obtiens la même chose “… a été mis en cache dans le référentiel local, la résolution ne sera pas tentée tant que l’intervalle de mise à jour de Nexus ne sera pas écoulé ou forcé -> [Aide 1]” .
Pour résoudre ce problème, j’ai ajouté
dans mon fichier de parameters (C: \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml).
nexus central http://central true always true always central http://central true always true always
Selon les parameters de référence :
updatePolicy: Cet élément spécifie la fréquence à laquelle les mises à jour doivent tenter de se produire. Maven comparera l’horodatage du POM local (stocké dans le fichier maven-métadonnées du référentiel) à la télécommande. Les choix sont les suivants: toujours, quotidien (par défaut), intervalle: X (où X est un entier en minutes) ou jamais.
Exemple:
... myRepo My Repository false always warn ... ...
Qu’est-ce qui se passe fondamentalement est, selon la mise à jour par défaut de maven.Maven va chercher les pots de repo sur une base quotidienne. Donc si pendant la première tentative votre internet ne fonctionnait pas alors il n’essayerait pas de récupérer ce jar jusqu’à 24 heures dépensées.
Résolution:
Soit utiliser
mvn -U clean install
où -U forcera la mise à jour du repo
Ou utiliser
... myRepo My Repository false always warn ...
dans vos parameters.xml
Si vous utilisez Eclipse, allez dans Windows -> Préférences -> Maven et décochez la case “Ne pas mettre à jour automatiquement les dépendances à partir des référentiels distants”.
Cela fonctionne aussi avec Maven 3.
Cette erreur peut parfois être trompeuse. 2 choses que vous pourriez vouloir vérifier:
Existe-t-il un JAR pour la dépendance dans le repository? Votre message d’erreur contient une URL de l’endroit où il recherche, alors allez-y, puis naviguez jusqu’au dossier correspondant à votre dépendance. Y a-t-il un pot? Sinon, vous devez modifier votre dépendance. (par exemple, vous pouvez indiquer une dépendance parentale de niveau supérieur lorsque vous devez pointer sur un sous-projet)
Si le fichier existe sur le serveur distant, supprimez simplement votre copie locale. Il sera dans votre répertoire personnel (sauf si vous avez configuré différemment) sous .m2 / repository (ls -a à afficher caché sous Linux).
Vous devez supprimer tous les fichiers “_maven.repositories” de votre référentiel.
Comment j’ai eu ce problème,
Lorsque je suis passé de Eclipse Juno à Luna et que j’ai vérifié mes projets Maven à partir du repository SVN, j’ai rencontré les mêmes problèmes lors de la création des applications.
Qu’est-ce que j’ai essayé? J’ai essayé de nettoyer le référentiel local puis de mettre à jour toutes les versions à l’aide de l’option -U. Mais mon problème a continué.
Puis je suis allé dans Fenêtre -> Préférences -> Maven -> Paramètres utilisateur -> et cliqué sur le bouton Réindexer sous Référentiel local et attendre que la réindexation ait lieu.
C’est tout, le problème est résolu.
Quelque peu pertinent .. je devenais
“[ERREUR] Échec de l’exécution de l’objective sur le projet testproject: Impossible de résoudre les dépendances pour le projet myjarname: jar: 1.0-0: Échec de la recherche de myjarname-core: bundle: 1.0-0 dans
http://repo1.maven.org/maven2
a été mis en cache dans le référentiel local, la résolution ne sera pas réessayée jusqu’à ce que l’intervalle de mise à jour de central soit écoulé ou que les mises à jour soient forcées -> [Aide 1] ”
Cette erreur a été causée par l’utilisation accidentelle de Maven 3
au lieu de Maven 2
. Juste pensé que cela pourrait sauver quelqu’un du temps, parce que ma recherche google initiale m’a conduit à cette page.
Si vous utilisez Nexus comme repository de proxy, le paramètre “TTL de cache introuvable” avec la valeur par défaut 1440 minutes (ou 24 heures). L’abaissement de cette valeur peut aider (Référentiels> Configuration> Paramètres d’expiration).
Voir la documentation pour plus d’informations.
Dans Eclipse:
Vérifiez le paramètre de miroir dans settings.xml. L’emplacement du miroir est probablement loin de votre domaine et n’est pas accessible. Essayez de choisir des miroirs plus près de votre emplacement hôte. Essayez d’utiliser les miroirs ci-dessous
repo.exist.com http://repo.exist.com/maven2 ibiblio.org http://mirrors.ibiblio.org/pub/mirrors/maven2 ibiblio.net http://www.ibiblio.net/pub/packages/maven2
ce problème m’a confondu pour un jour. Je l’ai résolu en vérifiant l’emplacement de mon repository local. J’ai utilisé IntelliJ comme IDE et j’ai trouvé que le repository local par défaut de maven est “C: /Users/.m2/repository”. Je l’ai changé pour mon chemin personnalisé et le problème a été résolu.