Lorsque maven dit «la résolution ne sera pas réessayée tant que l’intervalle de mise à jour de MyRepo ne s’est pas écoulé», où cet intervalle est-il spécifié?

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 .

  1. L’ update interval mentionné dans ce message d’erreur est-il un paramètre côté client ou côté serveur?
  2. Si côté client, comment le configurer?
  3. Si côté serveur, est-ce que quelqu’un sait comment / si Nexus / Artifactory expose ces parameters?

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é always dans mon fichier de parameters (C: \ Program Files \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml).

  nexus     central http://central truealways truealways     central http://central truealways truealways    

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:

  1. 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)

  2. 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:

  • Cliquez avec le bouton droit de la souris sur le projet -> Exécuter en tant que -> Maven Build -> Spécifiez Goal en tant que “clean install” – >> Les artefacts requirejs seront téléchargés dans le référentiel local.
  • – >> Quand le succès réussit !! -> Cliquez avec le bouton droit de la souris sur Project-> Maven -> Update Project (vérifiez le nettoyage).

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.