Comment puis-je amener Maven à utiliser les référentiels corrects?

J’ai juste vérifié certains projets et j’ai besoin de les construire, cependant j’ai installé Maven il y a un certain temps (6 mois peut-être?) Et je ne l’ai vraiment pas utilisé depuis – le pom.xml du projet que j’ai n’a pas http://repo1.maven.org/myurlhere “n’importe où – il contient l’url absolu où se trouve le repository maven pour le projet, mais maven essaie toujours de télécharger depuis le repo général de maven:

Macintosh:trunk$ mvn clean install [INFO] Scanning for projects... Downloading: http://repo1.maven.org/url/project/project/xx/project-xxpom [INFO] Unable to find resource 'url.project:project:pom:xx' in repository central (http://repo1.maven.org/) [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] Failed to resolve artifact. GroupId: url.project ArtifactId: project Version: xx Reason: Unable to download the artifact from any repository url.project:project:pom:xx from the specified remote repositories: central (http://repo1.maven.org/) 

Quelqu’un peut-il m’aider avec ce que je ne fais pas bien, au fond, je viens de vérifier les projets à partir de la ligne de commande, cd-ed dans le répertoire et exécuté “mvn clean install” – rien d’autre. Toute aide est grandement appréciée.

le pom.xml pour le projet que j’ai n’a pas ce ” http://repo1.maven.org/myurlhere ” n’importe où

Tous les projets ont http://repo1.maven.org/ déclaré en tant que (et ) par défaut. Ce référentiel, appelé référentiel central , est hérité comme d’autres parameters par défaut du “Super POM” (tous les projets héritent du Super POM). Ainsi, un POM est en fait une combinaison du Super POM, de tout POM parent et du POM actuel. Cette combinaison est appelée “POM efficace” et peut être imprimée en utilisant l’objective effective-pom du plugin Maven Help (utile pour le débogage).

Et en effet, si vous courez:

 mvn help:effective-pom 

Vous verrez au moins les éléments suivants:

     false  central Maven Repository Switchboard http://repo1.maven.org/maven2      never   false  central Maven Plugin Repository http://repo1.maven.org/maven2   

il a l’URL absolue où le repo Maven est pour le projet, mais Maven essaie toujours de télécharger à partir du repo général Maven

Maven va essayer de trouver des dépendances dans tous les référentiels déclarés, y compris dans la base qui est là par défaut comme nous l’avons vu. Mais, selon la trace que vous montrez, vous n’avez qu’un seul référentiel défini (le référentiel central) ou maven imprimera quelque chose comme ceci:

 Reason: Unable to download the artifact from any repository url.project:project:pom:xx from the specified remote repositories: central (http://repo1.maven.org/), another-repository (http://another/repository) 

Donc, fondamentalement, maven est incapable de trouver l’ url.project:project:pom:xx car il n’est pas disponible dans central.

Mais sans savoir quel projet que vous avez extrait (il contient peut-être des instructions spécifiques) ou quelle dépendance est manquante (il peut peut-être être trouvé dans un autre repository), il est impossible de vous aider davantage.

Par défaut, Maven cherchera toujours dans le repository officiel de Maven, à savoir http://repo1.maven.org .

Lorsque Maven essaie de créer un projet, il va chercher dans votre référentiel local (par défaut ~/.m2/repository mais vous pouvez le configurer en modifiant la valeur dans votre ~/.m2/settings.xml ) pour trouver dépendance, plugin ou rapport défini dans votre pom.xml . Si l’artefact adéquat n’est pas trouvé dans votre référentiel local, il recherchera tous les référentiels externes configurés, en commençant par celui par défaut, http://repo1.maven.org .

Vous pouvez configurer Maven pour éviter ce référentiel par défaut en définissant un miroir dans votre fichier settings.xml :

   repoMirror Our mirror for Maven repository http://the/server/ *   

De cette façon, au lieu de contacter http://repo1.maven.org , Maven contactera votre référentiel d’entreprise ( http://the/server dans cet exemple).

Si vous souhaitez append un autre référentiel, vous pouvez en définir un nouveau dans votre fichier settings.xml:

    true    foo.bar  true   true  http://new/repository/server   

Vous pouvez voir le modèle complet settings.xml ici .

Concernant le processus de clean , vous pouvez demander à Maven de le lancer hors connexion . Dans ce cas, Maven ne tentera pas d’atteindre des référentiels externes:

 mvn -o clean 

Au fond, tout ce que Maven vous dit, c’est que certaines dépendances de votre projet ne sont pas disponibles dans le référentiel central de maven. La valeur par défaut est de rechercher dans votre dossier local .m2 (référentiel local), puis dans tous les référentiels configurés dans votre POM, puis dans le référentiel central maven. Regardez la section des référentiels de la référence Maven.

Le problème est que le projet qui a été archivé n’a pas configuré le POM de manière à ce que toutes les dépendances puissent être trouvées et que le projet puisse être créé à partir de zéro.