我遇到了一个杀死我所有头发的maven问题。
所以在开始时我所有的maven项目都运行良好。然后当我今天切换到新计算机并尝试编译它们时。
我从Eclipse看到的第一个错误是从本地maven存储库读取jar文件的IO错误。然后我用谷歌搜索,有人建议这是一些损坏的文件,只需删除它们,让maven重建存储库。
这解决了一段时间的问题。然后它一次又一次地弹出。
我累了,删除了整个本地存储库并重新做了一切。然后我找到了原因:
maven远程存储库很糟糕。
所以这是控制台消息的一部分。
[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 PermanentlyMoved Permanently
The document has moved here.
Apache Server at maven-repository.dev.java.net Port 443
我被困住了。我怎样才能得到真正的依赖罐?我该如何告诉maven避免这种情况?这真的很烦人。
答案 0 :(得分:20)
maven中有bug之王,只是因为maven不会跳过拿一件神器 maven repo发送301(MOVED PERMANANTLY),它只是接收该消息并将其写为pom文件。简单地说,如果maven repo发送404它会跳过该repo并转到另一个repo,但是这里只有301它只是将消息转储为pom文件,稍后就会崩溃。
我假设您正在使用Maven 2.2.1?如果是,请尝试降级到Maven 2.2.0或使用其他设置。在2.2.1中是旅行车实施的变化。
Maven 2.2.1旨在纠正与在Maven 2.2.0中为HTTP / HTTPS传输选择基于HttpClient的Wagon实现相关的几个关键回归。新版本将恢复此选择,将基于Sun或轻量级的Wagon实现恢复为此类流量的默认设置。
然而,Maven 2.2.1更进一步提供了一种选择用户希望用于特定传输协议的提供者或实现的方法。
所以,试试用另外的参数运行maven。
mvn -Dmaven.wagon.provider.http=httpclient clean install
答案 1 :(得分:0)
一个答案:避免使用dev.java.net。它经常以某种方式被打破。如果您需要那些东西,请将它们安装在本地存储库管理器中。
答案 2 :(得分:0)
我在IntelliJ IDEA 13.1.5和Ubuntu 14.04上看到了这个错误。
Maven 2.2。?将301响应正文保存为〜/ .m2缓存中的jar文件,这会在构建期间导致问题。
我的修复是安装Maven 3. Ubuntu 14.04的说明在这里:
http://www.sysads.co.uk/2014/05/install-apache-maven-3-2-1-ubuntu-14-04/