7
votes

Comment forcer Maven à télécharger Maven-Metadata.xml du référentiel central?

Ce que je veux faire, c'est forcer Maven à télécharger le "Maven-Metadata.xml" pour chaque artefact que j'ai dans mon référentiel local.

Le comportement maven par défaut est de télécharger uniquement des métadonnées à partir de référentiels distants (voir Cette question ).

pourquoi je veux faire cela:

Actuellement, j'ai un référentiel distant exécuté dans une machine de construction. Par référentiel à distance, je veux dire un répertoire situé dans la machine de construction contenant toutes les dépendances que j'ai besoin pour construire mes projets maven. Notez que je n'utilise pas de gestionnaire de référentiel comme Nexus, le référentiel est juste une copie d'un référentiel local que j'ai téléchargé sur ma machine de construction.

Cependant, étant donné que mon référentiel local ne contenait pas les fichiers «Maven-métadata.xml», ces fichiers de métadonnées sont également manquants dans le référentiel de machines de construction. Si je pouvais récupérer les fichiers de métadonnées du référentiel central, il serait possible de télécharger un référentiel à distance de travail sur ma machine de construction.


1 commentaires

Je ne suis pas clair exactement ce que vous voulez dire, ou pourquoi vous devez faire cela. Pouvez-vous expliquer ce que vous essayez d'atteindre?


4 Réponses :


4
votes

Les référentiels par défaut sont définis dans le Super Pom .xml que tous les pompons héritent de par défaut.

Si par local, vous voulez dire que vous souhaitez utiliser uniquement ~ / .m2 / Repos / * puis travaillez en mode hors connexion. Ajouter true à votre paramements.xml

Si par local Vous voulez dire votre serveur local , vous pouvez installer un gestionnaire de référentiel comme Nexus, modifier votre fichier de paramètres pour utiliser Nexus sous "miroirs" comme ceci: xxx

et désactiver les référentiels distants que vous ne voulez pas dans Nexus .


3 commentaires

Par local, je veux dire ~ / .m2 / repos / *, cependant, si vous utilisez l'étiquette ou le drapeau -o Maven ne téléchargera pas les fichiers 'Maven-METADA.XML' que je veux.


Je pense que vous devez avoir une construction différente et déployer des repos pour votre machine à distance. Demandez à la machine de construction utilise un repo Maven local pour la construction, puis un autre endroit sur disque pour le déploiement. Utilisez un serveur pour rendre ce 2e référentiel visible. Vous voudrez également que vos constructions locales déployées à ce 3ème repose-dessus. Les métadonnées se termineront dans cette situation.


Quoi & pourquoi ? ci-dessus la description me aide.



9
votes

Vous ne voulez pas obtenir les métadonnées des référentiels publics, il contiendra toutes les versions disponibles d'un artefact donné, tandis que votre référentiel aura du sous-ensemble des versions.

Il convient de souligner que vous seriez vraiment mieux avec un gestionnaire de référentiel. Les étapes suivantes vous permettent de générer vos métadonnées artefact une fois. Mais si vos besoins changent, vous devrez répéter le processus ou mettre à jour les fichiers manuellement, alors pourquoi ne pas utiliser un gestionnaire? Nexus peut être autonome et a une très petite empreinte.


Même si vous ne prévoyez pas d'utiliser Nexus pour un gestionnaire de référentiel, vous pouvez toujours l'utiliser pour générer vos métadonnées.

  1. premier Installez Nexus.
  2. localiser le répertoire de travail Nexus (par défaut $ {user.home} / sonatype-travail.
  3. Copiez votre contenu de référentiel local sur le sous-répertoire de Nexus-Work / Works.
  4. Démarrez Nexus et connectez-vous au Page d'accueil Nexus dans le navigateur (par défaut http: // localhost: 8081 / NEXUS )
  5. Connectez-vous à l'aide du compte administrateur (mot de passe admin123)
  6. Cliquez sur le lien référentiels sur le côté gauche.
  7. Sélectionnez le référentiel de publiés, cliquez avec le bouton droit de la souris et cliquez sur Rebuild Metadata

    Dans quelques instants, vous devriez avoir les métadonnées générées pour tous les artefacts. Vous pouvez ensuite les copier où vous avez besoin d'eux et désinstaller Nexus.


4 commentaires

Je suis d'accord, il a besoin de repos partagés pour la construction et les machines locales. Il n'y a aucun moyen qu'il va garder les deux copies des métadonnées en synchronisation


La solution a fonctionné pour moi. En outre, grâce à SAL pour les conseils, mais ce dont j'ai vraiment besoin est une solution de contournement pour le problème, même si je comprends que ce n'est pas la solution idéale ...


Cela ne répond pas à la question.


La question ne concernait pas pourquoi vous devriez ou ne devriez pas télécharger les métadonnées. Il s'agit de savoir comment le faire.



1
votes

Une chose que j'ai trouvée est que quelqu'un faisait une recherche initiale de Jarvana et avait placé cela dans le POM, ce qui entraîne un message d'erreur de métadonnées. Ceci ... xxx

.. corrigé et l'erreur est parti.


0 commentaires

0
votes

Le gestionnaire de référentiel est génial mais je ne veux pas installer et l'exécuter sur mon ordinateur portable. Je veux juste économiser des ressources. Donc, ma solution est ci-dessous:

  1. Installez le référentiel comme artifacteur ( https://www.jfrog.com/artifactory )
  2. Run Matérialisez à travers ce serveur (localhost: 8081)
  3. exécutez matérialiser thru distant serveur (Centre.Maven.org)
  4. Télécharger le cache Contenu de l'artefactory
  5. fusion to dossier: dossier Télécharger à partir de l'étape 4 et du dossier à ~ / .m2 / référentiel.

    Maintenant, j'ai un référentiel hors ligne avec du contenu complet (binaire, source, XML, MD5, SHA1)


0 commentaires