web-dev-qa-db-fra.com

Comment empêcher Maven de télécharger des artefacts à chaque fois?

J'utilise Maven 3.1.1. Dans un de mes projets, je référence un autre de mes projets…

    <dependencies>
            <dependency>
                    <groupId>org.mainco.subco</groupId>
                    <artifactId>myprojectA</artifactId>
                    <version>${project.version}</version>
            </dependency>

Ce qui précède dépend de quelques autres de mes projets. Cependant, lorsque j'exécute "mvn clean install", Maven tente de télécharger ces artefacts au lieu d'utiliser simplement ce qui se trouve dans mon référentiel local. Comment puis-je demander à Maven de télécharger uniquement des éléments s'ils n'existent pas dans mon référentiel local? Voici le résultat de ce que je vois…

davea$ mvn clean install
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building subco admin Module 57.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://download.Java.net/maven/2/org/mainco/subco/myprojectA/57.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.Java.net/maven/2/org/mainco/subco/subco/57.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.Java.net/maven/2/org/mainco/subco/projectB/57.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.Java.net/maven/2/org/mainco/subco/projectC/57.0.0-SNAPSHOT/maven-metadata.xml
[INFO]
40
Dave

Vous pouvez contrôler la fréquence des mises à jour en configurant des référentiels dans le $USER_HOME/.m2/settings.xml fichier. Plus précisément, remplacez updatePolicy par une valeur qui entraîne des mises à jour moins fréquentes.

Cette réponse Stackoverflow a plus de détails.

23
user944849

Si vous utilisez un indicateur hors ligne, il utilisera vos bibliothèques à partir du référentiel local.

mvn clean install -o 
68
jayalalk

Si vous souhaitez mettre à jour certains fichiers jar mais pas les instantanés de ceux installés localement, vous devez utiliser le -nsu (--no-snapshot-updates) flag pour empêcher Maven de récupérer le dernier instantané du référentiel principal. En utilisant -o l'empêchera de récupérer d'autres mises à niveau et (souvent) des fichiers maven essentiels à partir de référentiels distants.

6
Ian Turton

D'après mon expérience, rien de tout cela ne fonctionne une fois que maven a "décidé" qu'il devait télécharger le fichier à partir d'un serveur spécifique.

Configurez updatePolicy une autre suggestion, mais pour réussir, vous devez aller dans le dossier à l'intérieur du référentiel local où se trouve le bocal et supprimer un fichier nommé "_maven.repositories". Supprimez également tous les fichiers se terminant par ".lastUpdated". Aussi "m2e-lastUpdated.properties" si vous utilisez le plugin Eclipse.

1
Rober2D2

Vous pouvez configurer des référentiels dans le

settings.xml

fichier de votre installation maven.

En savoir plus sur la page Web configuration Maven .

0
Leo