97 votes

Les téléchargements Maven ont pour extension .lastUpdated.

J'ai une installation Eclipse avec m2eclipse et subversive. J'ai importé un projet maven2 depuis svn. Mais je reçois le message d'erreur qu'il manque tout un tas d'artefacts (par exemple : Artéfact manquant org.springframework:spring-test:jar:3.0.1.RELEASE:test).

Si je regarde dans mon dépôt, je vois les fichiers jar mais ils ont une extension supplémentaire .lastUpdated. Pourquoi maven ajoute-t-il l'extension .lastUpdated aux fichiers jar ? Et plus important encore : comment puis-je résoudre ce problème ?

Il n'y a aucune mention du type lastUpdated dans mes POMs.

69voto

Jörn Guy Süß Points 252

Ces fichiers indiquent à Maven qu'il a tenté d'obtenir l'archive par téléchargement, mais qu'il n'y est pas parvenu. Afin d'économiser la bande passante, il n'essaiera pas de le faire à nouveau avant qu'une certaine période de temps encodée dans le fichier ne se soit écoulée. Le commutateur de ligne de commande -U force maven à effectuer la mise à jour avant la période de réessai. Cela peut être nécessaire si vous avez essayé de construire alors que vous étiez déconnecté du réseau.

La méthode de suppression des fichiers fonctionne avec la plupart des versions de maven, mais comme les fichiers sont des mémentos internes à maven, je ne recommande pas cette méthode. Il n'y a aucune garantie que ces informations ne sont pas référencées ou conservées ailleurs et une telle manipulation peut endommager le système.

0 votes

J'ai essayé mvn -U clean, mais ça n'a pas réglé le problème. Est-ce qu'il me manque quelque chose ?

0 votes

Votre dernière déclaration du premier paragraphe me semble contradictoire en tant que novice en la matière - Cela peut être nécessaire si vous avez tenté de construire en étant déconnecté du réseau. Si je tente de construire en étant déconnecté, alors -U essaiera de télécharger à partir du dépôt distant et échouera, selon mon interprétation de ce que vous avez dit.

0 votes

Je voulais dire, "l'activation de -U peut devenir nécessaire si vous avez essayé de construire alors que vous étiez déconnecté du réseau, et que le marqueur a été activé".

14voto

Rubens Mariuzzo Points 6022

Comme rperez J'ai dit, j'ai l'habitude de supprimer tous ces .lastUpdated fichiers. Sous Linux, j'ai créé un petit script pour rester simple :

find -name \*.lastUpdated -exec rm -fv {} +

Il suffit de créer un fichier avec le contenu précédent et de le placer sur votre dépôt Maven local. Habituellement, ce sera ~/.m2/repository .

3 votes

Dans zsh : rm ~/.m2/repository/**/*.lastUpdated

6 votes

Vous pouvez aussi simplement utiliser la fonction find delete pour supprimer les fichiers qu'il trouve, au lieu de exec rm sur les résultats. Par exemple, find ~/.m2 -name *.lastUpdated -delete

7voto

user303158 Points 146

J'ai installé Maven2 et lancé mvn compile depuis la ligne de commande. Cela semble avoir résolu le problème

0 votes

La compilation en utilisant la ligne de commande a résolu ce problème pour moi. Je pense que cela peut être un problème de m2eclipse.

1 votes

Sous Windows 7 Professional SP 1, en 2017, j'ai eu des problèmes similaires avec le plug-in Eclipse, et je l'ai abandonné en faveur du CLI, qui donne des rapports beaucoup plus complets et utilisables que je peux enregistrer, importer dans Excel, et générer toutes sortes de rapports utiles couvrant les paquets manquants, les fichiers qui n'ont pas été téléchargés, les POM et JAR non appariés, et d'autres statistiques utiles.

2voto

rperez Points 2171

Vous avez peut-être un problème avec certains des artefacts à récupérer à partir du référentiel. par exemple, spring framework a son propre référentiel. cette extension est ajoutée lorsque l'artefact ne peut pas être entièrement téléchargé. ajoutez le référentiel spring framework à votre pom ou settings.xml, supprimez le dossier qui contient les pots cassés et recommencez.

0 votes

D'accord. Au lieu d'un pom ou jar valide, généralement un pom ou jar terminé par un lastUpdate ne fait que 2k, dont le contenu ressemble plus à un journal d'erreurs. C'est généralement le résultat de "failed to collect dependencies at ... "

0 votes

C'est une façon intéressante de les considérer ; j'ai toujours pensé qu'il s'agissait d'entités distinctes (fichiers mis à jour en dernier), plutôt que des JARs ou POMs sur lesquels ils font rapport. De la même manière, je considère MyDotNetAssembly.exe.config comme un type de fichier distinct de MyDotNetAssembly.exe.

2voto

carlspring Points 7885

Si vous rencontrez ce problème et que vous utilisez Nexus, il se peut que vous ayez défini une règle de routage, ce qui est incorrect. J'ai rencontré ce problème moi-même et les fichiers qu'il téléchargeait étaient correctement nommés, aux bonnes URLs qu'il regardait, mais ils étaient tous avec la règle de routage suivante .lastUpdated et un message d'erreur comme contenu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X