2009-08-07 12 views
3

Je travaille dans un environnement d'intégration continue et une partie du processus de construction automatisée inclut la compilation de projets gérés par Maven.Existe-t-il un moyen de rendre la construction Maven indépendante de la connexion réseau?

Ce que je veux savoir, c'est s'il existe un moyen de rendre la construction de Maven indépendante de la connexion réseau.

Actuellement, nous avons tous les jar dont nous avons besoin installés dans le référentiel mais le problème est que Maven essaie de vérifier les mises à jour des plugins et que la construction échoue si, finalement, la connexion est coupée.

Répondre

5

Vous pouvez exécuter en mode hors connexion avec le commutateur -o ou en ajoutant <offline> vrai <offline> à votre settings.xml. Il est à noter que Maven peut échouer lors de l'exécution hors ligne s'il décide qu'il doit vérifier les dépendances ou les mises à jour du plugin. Si vous définissez vos référentiels avec <updatePolicy> jamais </updatePolicy > vous pouvez éviter cela, mais vous devrez forcer des mises à jour périodiquement (avec -U et/ou -cpu).

Si vous utilisez un gestionnaire de référentiels, vous pouvez définir votre référentiel comme un miroir des référentiels externes. Cela implique toujours une connexion réseau, mais uniquement votre réseau interne (ou si le gestionnaire de référentiel est sur votre machine locale, pas de connexion du tout).

Par exemple, cette configuration redirige tous les appels vers le centre de mon serveur Nexus locale en cours d'exécution sur ma boîte de développement:

<mirrors> 
    <mirror> 
    <id>central-proxy</id> 
    <mirrorOf>central</mirrorOf> 
    <url>http://localhost/nexus/content/groups/public</url> 
    </mirror> 
</mirrors> 
+0

Nexus peut être trouvé à: http://nexus.sonatype.org/ Je l'ai trouvé un jeu d'enfant à installer et à configurer. – extraneon

+0

Il semble que la solution soit exactement ce dont j'ai besoin. Est-ce que quelqu'un sait un moyen de tester si cela fonctionne? –

+1

vous pouvez modifier manuellement votre fichier maven-metadata- [repository] .xml pour qu'un artefact dans votre référentiel local soit en dehors de la plage. Supposons que vous avez défini updatePolicy sur * daily *, que vous modifiez la date il y a 2 jours, puis exécutez une construction qui dépend de cet artefact. Le référentiel correspondant doit être vérifié pour les mises à jour –

3

utiliser l'option -o (hors ligne)

0

Vous pouvez essayer d'installer un « Build artefact Repository Manager » comme Archiva (http://archiva.apache.org/) dans votre localité réseau. Cela fonctionnera comme un miroir, donc maven essaiera de télécharger et de vérifier les mises à jour sur votre réseau local et non sur internet. Uou devrait également construire vos propres artefacts et l'utiliser sur Archiva.