Comment puis-je corriger incorrect sommes en mon Nexus référentiel?
Certains artefacts dans mon local Nexus référentiel n'avez pas la somme de contrôle est correcte. Par exemple (mauvaise somme de contrôle):
chat centrale/org/codehaus/plexus/plexus-compilateur-api/1.8/plexus-compilateur-api-1.8.pom.sha1
95f3332c2bbace129da501424f297e47dd0e976b
vs (somme de contrôle est correcte):
sha1sum centrale/org/codehaus/plexus/plexus-compilateur-api/1.8/plexus-compilateur-api-1.8.pom
4c2947f7e2d09b6e13da34292d897c564f1f9828
Il semble que j'ai un peu d'artefacts dans mon référentiel qui ont été téléchargés lorsque ce bug était actif.
Maven Central dispose de la somme de contrôle est correcte (4c29...) maintenant, mais les sommes en mon local Nexus référentiel restent obsolètes. Je ne sais pas comment récupérer mon dépôt local pour vérifier et /ou de re-télécharger le bon de somme de contrôle du centre.
Quelle est la bonne façon de fixer mon dépôt local. Il n'y a pas trop d'artefacts avec ce problème, donc je pense que je pouvais (à la main) de vérifier qu'elles existent encore dans le centre et le supprimer de mon dépôt local. Ils devraient être à nouveau mis en cache avec le bon de sommes de contrôle. Est-il un meilleur moyen?
Mise à jour:
J'ai regardé cela de plus et je suis presque certain que je sais quelle est la source de mon problème. L'un des artefacts, je vais avoir des ennuis avec, est ce un (plexus-compilateur-api:1.8):
Dans mon référentiel, à la fois l' .pom et .pom.sha1 sont horodatés 29-Mar-2010. Au niveau central, l' .pom est horodaté 29-Mar-2010, tandis que l' .pom.sha1 est horodaté 21-Apr-2010. J'ai lu sur Nexus entretien. Je suppose que, sur 21-Apr-2010, Maven Central reconstruit métadonnées et vérifié les sommes de contrôle qui fixe les incorrecte .sha1 pour le plexus-compilateur-api:1.8 artefact.
Selon la Sonatype lien ci-dessus, je devrais être capable de faire expirer les caches pour Maven Central et d'avoir mon installation locale tirer de nouvelles copies de quoi que ce soit avec les nouveaux horodateurs que l'origine de la mise en cache des artefacts. Toutefois, en se fondant sur le comportement que j'ai observé, je pense que c'est la seule vérification des horodateurs pour les artefact de fichiers, pas de somme de contrôle des fichiers.
En ce qui concerne ma connexion locale référentiel est, j'ai la version la plus récente de l'artefact (29-Mar-2010), donc il n'y a pas besoin de re-télécharger quoi que ce soit.
J'ai remarqué que ma version de Nexus est assez ancien (1.5 vs 1.9.1), donc je vais essayer de mettre à jour et de voir si la nouvelle version ne fait un meilleur travail de l'expiration des caches. Si pas, je vais probablement voir ce que le Sonatype en pensez (c'est peut-être un bug?).
Vous devez vous connecter pour publier un commentaire.
Nope, ce que vous devez faire face est le comportement défini de Nexus et Maven.
Première, qui expire caches ne pas supprimer quoi que ce soit à partir du cache local de la Nexus, il indique simplement qu'elles sont "vieux". L'effet de marquer les éléments comme "vieux" est indiqué sur nouvelle demande pour ces mêmes artefacts (si jamais demandé, le "vieux" artefacts se trouve juste là). Sens, d'expiration du cache seul ne provoquera pas de lien pour le téléchargement à distance changé (plus récente) des fichiers. Nexus jamais téléchargements sur son propre (si l'on exclut l'index à partir de cette discussion). Vous devez forcer un client (Maven) demander pour eux – et qui sera le résultat à la suite de la chaîne d'action: "le contenu du cache vieux", à distance de la détection de changement et enfin re-télécharger et la mise en cache du nouveau fichier.
Prochaine, ce qui se passe ici est que Maven, depuis artefact (le fichier JAR) n'est pas modifié, pas à demande même pour le fichier de somme de contrôle soit, donc rien de "déclencheurs" dans le "vieux" a marqué de la somme de contrôle récupère à nouveau sur le Nexus côté. Autre remarque, si nous parlons de la sorti de l'artefact (et Maven Central ne contient publié artefacts seulement), Maven ne sera jamais re-vérifier, à moins qu'ils ne sont pas présents dans le référentiel local (une fois mis dans un dépôt local, Maven ne sera jamais essayer de réextraire eux). Ce qui signifie, vous devez les supprimer de dépôt local pour être sûr que Maven va demander de la Nexus, et enfin, le Nexus détecte le fichier de somme de contrôle des changements sur la télécommande et faire ce que vous voulez vraiment.
Re-téléchargement devrait se produire, par exemple, si vous nuke Maven local de dépôt et de reconstruire avec une nouvelle/un vide. Dans ce cas, Maven devrait le faire pour les deux, un POT de l'artefact et le fichier de somme de contrôle – mais à partir de votre description, il n'est pas clair comment avez-vous (ou avez-vous?) invoquer Maven après l'expiration des caches sur le Nexus.
Essayez ceci:
a) exécuter expire caches sur Nexus "Maven Central" proxy référentiel
b) nuke référentiel local (ou tout simplement rediriger vers un nouveau dossier propre à trafiquer ~/.m2/settings.xml
c) faire Maven build de votre projet, et il doit récupère à nouveau à la fois, le POT et la somme de contrôle des fichiers (à l'aide de vide/nuked référentiel local)
De l'espoir c'est ce qui explique certaines des choses que vous avez écrit.
Référence à JIRA question de discuter de la même chose.
C'était un bug.
Comme expliqué par Tamas, lorsqu'un proxy référentiel cache est expiré, la Nexus va vérifier le dépôt distant pour les nouveaux horodateurs. Mis en cache localement les artefacts sont essentiellement marqués sale et la vérification de mise à jour des artefacts qui se passe sur la demande que les artefacts sont priés de le local serveur Nexus.
Nexus (1.9.1) fait l'hypothèse que si un artefact timestamp est inchangé, les totaux de contrôle devrait être inchangé. La plupart du temps ce sera vrai, mais, en raison de la vieux bug dans Maven qui a été le déploiement d'artefacts avec incorrecte des sommes de contrôle, il existe de rares cas où un artefact peut être inchangé encore une mise à jour de la somme de contrôle.
Je pense que la meilleure façon de régler ce problème pour l'instant sera de déplacer toute une somme de contrôle incorrecte et laissez Nexus essayer de re-régler la prochaine fois qu'ils se sont demandé:
mv plexus-compilateur-api.pom.sha1 plexus-compilateur-api-1.8.pom.sha1.bak
Merci pour l'aide Tamas.