我安装的所有新Maven依赖项都刚刚开始出现此错误。依赖关系在Maven依赖关系树中显示为空,并且项目报告例如:Description Resource Path Location Type Archive for required library: '~/.m2/repository/com/ning/async-http-client/1.8.14/async-http-client-1.8.14.jar' in project 'LB' cannot be read or is not a valid ZIP file LB Build path Build Path Problem
我查看了每个新依赖项的POM文件,并且它们都包含在其中:
<HTML>
<BODY>
This repo has moved to repo.boundlessgeo.com. Please update your settings.
</BODY>
</HTML>
因此,我发现基于此,OpenGeo Maven Repo已移动:
<!-- <repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>opengeo</id>
<name>OpenGeo Maven Repo</name>
<url>http://repo.opengeo.org</url>
</repository> -->
替换为:
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>boundless</id>
<name>Boundless Maven Repository</name>
<url>http://repo.boundlessgeo.com/main</url>
</repository>
即使我解决了此问题,所有其他依赖项仍然无法安装。知道为什么其他任何存储库的POM文件都会不断从OpenGeo收到HTML通知吗?我该如何解决?
这是我pom.xml的整个回购部分
<repositories>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net repo</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>osgeo</id>
<name>Open Source Geospatial Foundation Repo</name>
<url>http://download.osgeo.org/webdav/geotools/</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>opengeo</id>
<name>OpenGeo Maven Repo</name>
<url>http://repo.opengeo.org</url>
</repository>
<repository>
<id>central</id>
<name>The Central Repository</name>
<url>http://repo1.maven.org/maven2/</url>
</repository>
最佳答案
更新的答案:
如果您在pom.xml中定义了一个存储库,该存储库提供静态内容而不是适当的Maven存储库(在本例中为http://repo.opengeo.org(已移至http://repo.boundlessgeo.org)),则Maven将下载静态内容作为pom,jar,等,并抱怨它后来被损坏。这些无效文件将保留在本地存储库中,直到您删除它们为止,即使在修复问题存储库之后也是如此。
摆脱无效文件的最简单方法是删除整个〜/ .m2 /存储库并重新下载所有工件。但是,您也可以只删除问题文件(根据无效文件中的静态内容调整grepped消息):
grep -lrIZ "This repo has moved to repo.boundlessgeo.com" ~/.m2/repository \
| xargs -r0 rm
然后执行正常的
mvn clean install
,并且应该从更正的存储库中下载有效的工件。有关将http://repo.opengeo.org更新为http://repo.boundlessgeo.org的详细信息,请参见原始问题。
注意:Maven可能会下载无效的静态内容,因为repo.opengeo.org返回的状态码为200。
原始答案:
您是否可能以某种方式将旧的OpenGeo Maven Repo配置为所有存储库的镜像?也许是在您的本地settings.xml中,还是在Nexus工件存储库中?
我遇到了类似的情况,在这种情况下,我们的Nexus服务器在我们的代理OpenGeo存储库中以某种方式包含了许多非OpenGeo工件。一旦移动了OpenGeo / BoundlessGeo存储库,我就会收到“此存储库已移动”消息,直到我从代理存储库中删除了非OpenGeo工件。