27 votes

Comment obtenir maven à timeout plus tôt tout en téléchargeant des dépendances?

Je construis mon projet Apache Maven et de disposer d'un référentiel personnalisé configuré, mais quand il frappe le référentiel se bloque pendant un temps très long avec

Téléchargement: http://maven.mycompany.com/m2/org/springframework/spring/2.5.6/spring-2.5.6.pom

après quelques minutes, il va et il le télécharge à partir de la centrale repo

Téléchargement: http://repo1.maven.org/maven2/org/springframework/spring/2.5.6/spring-2.5.6.pom 12K téléchargé (printemps-2.5.6.pom)

Je veux que le délai d'attente pour être beaucoup plus rapide. Ce qui se passe avec toutes les nouvelles versions de maven. La Version 2.0.6 ou plus tôt n'ont pas ce problème, il serait délai beaucoup plus rapide.

18voto

Rich Seller Points 46052

Dans les versions de Maven 2.1 avant, il n'y a pas moyen de configurer le client en attente, mais vous pouvez le configurer pour vérifier les mises à jour moins souvent si vous définissez la stratégie de mise à jour. Cela résout partiellement le problème.

Par exemple:

<repository>
  <id>myrepo</id>
  <url>http://maven.mycompany.com/m2</url>
  <releases>
    <enabled>true</enabled>
    <updatePolicy>daily</updatePolicy>
  </releases>
  <snapshots>
    <enabled>false</enabled>
    <updatePolicy>always</updatePolicy>
  </snapshots>
</repository>

Les valeurs valides sont:

  • toujours - toujours vérifier quand Maven est commencé pour les versions plus récentes de clichés
  • jamais - jamais vérifier les nouvelles versions distantes. Une fois hors des mises à jour du manuel peut être effectué.
  • tous les jours (par défaut) - case sur la première course de la journée (heure locale)
  • intervalle:XXX - vérifier toutes les XXX minutes

Une autre considération est le logiciel que vous utilisez pour héberger votre référentiel interne. Avec un gestionnaire de dépôt tels que Nexus , vous pouvez gérer l'ensemble de votre télécommande externe connexions au référentiel par l'intermédiaire du gestionnaire et de configurer le délai d'attente pour ces connexions à distance. Votre client aura alors qu'à la requête du gestionnaire de référentiel, ce qui devrait répondre le plus rapidement comme les délais le permettent.


Mise à jour:

Si vous connaissez les dépendances ne sont pas va être servi par un référentiel spécifique, vous pouvez les séparer en un profil, de sorte qu'il n'est pas référencé dans ce build.

<profiles>
  <profile>
    <id>remote</id>
    <repositories>
      <repository>
        <id>central</id>
        <url>http://repo1.maven.org</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
      </repository>
      ...
    </repositories>
  </profile>
  <profile>
    <id>internal</id>
    <repositories>
      <repository>
        <id>myrepo</id>
        <url>http://maven.mycompany.com/m2</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
      </repository>
      ...
    </repositories>
  </profile>
</profiles>

Avec la config ci-dessus, l'exécution de mvn package -Premote refuse de se connecter au référentiel interne, de sorte que le délai d'attente ne sera pas un facteur.

Vous pouvez éviter d'avoir à spécifier les profils sur chaque build en ajoutant la configuration de vos paramètres:

<settings>
  ...
  <activeProfiles>
    <activeProfile>internal</activeProfile>
    <activeProfile>remote</activeProfile>
  </activeProfiles>
  ...
</settings>

Pour Maven 2.1, vous pouvez définir le délai d'attente par l'ajout d'une configuration sur un serveur dans le Maven paramètres, par exemple:

<server>
  <id>myrepo</id>
  <configuration>
    <timeout>5000</timeout> <!-- 5 seconds -->
  </configuration>
</server>

0voto

Andrew Points 2578

Un hack rapide et sale est l’ajout d’une entrée de fichier hôtes personnalisés pour rediriger les demandes de réseau vers le référentiel invalide à un valide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X