3
votes

Remplacer la bibliothèque maven par une bibliothèque locale

J'ai une dépendance dans pom sur une bibliothèque. Je veux y apporter des modifications, le tester localement et si cela fonctionne correctement, le déployer sur un dépôt distant. J'ai donc apporté localement quelques modifications à cette bibliothèque, je l'ai installée en tant que fichier jar et je souhaite la remplacer dans la bibliothèque distante de mon projet principal par la bibliothèque locale.

Quelle est la bonne façon de procéder?


3 commentaires

Dépend. Utilisez-vous Nexus ou Artifactory? S'agit-il de votre propre bibliothèque (ou d'une bibliothèque tierce)? Quel type d'outil de construction utilisez-vous? Qu'avez-vous essayé?


Copie possible de [ stackoverflow.com/questions/4955635/...


Notez que l'état d'esprit de Maven est que les artefacts non-SNAPSHOT sont en général gelés et que toute copie est aussi bonne que toute autre donc les caches peuvent être perturbateurs et vos builds ne seront pas reproductibles. Cela signifie, soit utilisez des SNAPSHOTs, soit faites très attention à ce que vous faites. La création d'un nouvel artefact peut être la meilleure solution.


3 Réponses :


1
votes

Maven regarde d'abord dans votre dépôt local dans

C: \ Users \ User \ .m2 \ repository

et s'il ne trouve pas la bibliothèque, alors il recherche dans les dépôts distants. Si je comprends bien votre question, cela devrait se produire automatiquement tant que vous pointez la version correcte dans le POM.


0 commentaires

2
votes

Lors de la résolution des dépendances, Maven recherche dans votre référentiel local ( $ HOME / .m2 / repository ). Donc, si vous avez installé votre dépendance modifiée dans votre référentiel local (par exemple via mvn install ), alors lorsque vous construisez votre projet principal, il sera utilisé.

Pour rendre cela plus évident, vous voudrez peut-être changer les versions utilisées à la fois dans la bibliothèque et dans le POM de votre projet principal, afin d'être sûr que votre version est utilisée pour les tests.

Vous pouvez également trouver cette question / réponse utile: Comment puis-je forcer Maven à utiliser mon référentiel local plutôt que d'aller dans des dépôts distants pour récupérer artefacts?


0 commentaires

1
votes

Vous pouvez remplacer le référentiel maven par défaut dans le pom du projet:

 <repositories>
    <repository>
      <id>central</id>
      <url>file://d:/repo</url>
    </repository>
  </repositories>


0 commentaires