2009-12-11 7 views
7

Je suis en train de courir dans un problème Maven qui tue tous mes cheveux. Donc, au début, tout mon projet maven fonctionne très bien. Et puis quand je suis passé à un nouvel ordinateur aujourd'hui et essayer de les compiler tous.Maven téléchargements Jars corrompus

La première erreur que je vois à partir d'Eclipse est l'erreur d'E/S qui lit les fichiers jar du référentiel maven local. Ensuite, je ai googlé et quelqu'un a suggéré que ce soit des fichiers corrompus, il suffit de les supprimer et laisser maven reconstruire le référentiel.

Cela résout le problème pendant un certain temps. Et puis il continue à apparaître encore et encore. Je me suis fatigué et j'ai retiré tout le dépôt local et j'ai tout recommencé à zéro. Puis j'ai découvert la cause:

Le référentiel distant maven est BAD.

Voici donc une partie des messages de la console.

 
[INFO] Unable to find resource 'org.apache.ws.commons.axiom:axiom-dom:jar:1.2.8' 
in repository eclipse-repo (http://repo1.maven.org/eclipse) 
Downloading: https://maven-repository.dev.java.net/nonav/repository//org.apache. 
ws.commons.axiom/jars/axiom-dom-1.2.8.jar 
373b downloaded (axiom-dom-1.2.8.jar) 
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '2c6102c2c3 
70e0b993e897e981618ed448651147'; remote = ' 

The file contains an http redirect.

301 Moved Permanently

Moved Permanently

The document has moved here .


Apache Server at maven-repository.dev.java.net Port 443

Je suis bloqué. Comment puis-je obtenir les vrais pots de dépendance? Comment puis-je dire à maven d'éviter cela? C'est vraiment énervant.

Répondre

19

Il y a le roi du bug dans maven, simplement parce que maven ne saute pas en prenant un artefact si un du repo maven envoie un 301 (MOVED PERMANANTLY) et il prend simplement ce message et l'écrit comme le fichier pom. Simplement si le repo maven envoie 404, il sautera ce repo et ira pour un autre, mais ici avec 301, il videra simplement le message comme le fichier pom et plus tard sur ces échecs.

Je suppose que vous utilisez Maven 2.2.1? Si oui, essayez de revenir à Maven 2.2.0 ou d'utiliser un paramètre supplémentaire. En 2.2.1 était le changement dans la mise en œuvre du wagon. Maven 2.2.1 vise à corriger plusieurs régressions critiques liées à la sélection de l'implémentation Wagon basée sur HttpClient pour les transferts HTTP/HTTPS dans Maven 2.2.1. La nouvelle version rétablit cette sélection, en rétablissant l'implémentation Wagon basée sur Sun - ou légère - par défaut pour ce type de trafic. Cependant, Maven 2.2.1 va encore plus loin en proposant un moyen de sélectionner quel fournisseur - ou implémentation - l'utilisateur souhaite utiliser pour un protocole de transfert particulier. Donc, essayez d'exécuter maven avec des paramètres supplémentaires.

mvn -Dmaven.wagon.provider.http=httpclient clean install 
+0

J'utilise 2.2.1. Mais j'utilise aussi m2eclipse dans Eclipse. Il va être difficile d'avoir toute notre équipe de développement pour faire les paramètres supplémentaires. J'espère que Maven va résoudre ce problème bientôt. Actuellement, mon travail consiste à installer un serveur de référentiel local. Dans le serveur, j'ai mis une politique de somme de contrôle stricte dans tous les dépôts. – savanna

+0

Ce n'est pas "genre de" c'est un bug. Merci pour vos conseils, ça m'a aidé. –

0

Une réponse: évitez dev.java.net. Il est souvent cassé d'une façon ou d'une autre. Si vous avez besoin de choses à partir de là, installez-les dans un gestionnaire de référentiel local.

+0

Comment puis-je faire cela? Je suis nouveau à Maven. Je n'ai pas configuré ce référentiel. Je n'utilise que celui par défaut. – savanna

+0

En outre, Maven installe réellement les pots corrompus. J'espère que Maven éliminera simplement les fichiers. Ce serait tellement mieux. – savanna

+0

java.net n'est pas un référentiel par défaut. Quelqu'un l'a mis dans votre liste de référentiel. La liste d'utilisateurs maven est un meilleur endroit pour demander s'il y a un moyen de le faire rejeter la redirection. – bmargulies

0

J'ai vu cette erreur avec IntelliJ IDEA 13.1.5 et Ubuntu 14.04.

Maven 2.2.? enregistre le corps de la réponse 301 en tant que fichier jar dans le cache ~/.m2, ce qui provoque des problèmes plus tard au cours de la construction.

Le correctif pour moi était d'installer Maven 3. Instructions pour Ubuntu 14.04 sont ici:

http://www.sysads.co.uk/2014/05/install-apache-maven-3-2-1-ubuntu-14-04/