Gangmax Blog

Maven "Unable to read local copy of metadata" problem

Migarated from here at ‘2012-06-04 17:16:25’.

我安装了ubuntu之后,编译maven工程报错,大概内容是”can’t read [mvn_local_rep]/org/glassfish/javax.enterprise.deploy/10.0-SNAPSHOT/xxx.pom”。错误信息类似下面这样:

1
2
3
4
5
6
Reason: Error getting POM for
'org.apache.maven.plugins:maven-site-plugin' from the repository:
Unable to read local copy of metadata: Cannot read metadata from
'/home/usr/.m2/repository/org/glassfish/javax.enterprise.deploy/10.0-SNAPSHOT/xxx.pom':
end tag name </body> must match start tag name <hr> from
line 7 (position: TEXT seen ...</address>\n</body>... @9:8)

 
查看该文件发现内容类似如下:

1
2
3
4
5
6
7
8
9
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved here.</p>
<hr>
<address>Apache Server at maven2-repository.dev.java.net Port 443</address>
</body></html>

网上搜索也没有结果。最后想到应该是目前所用的repository中没有正确的artifact “/org/glassfish/javax.enterprise.deploy/10.0-SNAPSHOT”,要解决该问题就要指向一个包含该aritifact的repository。我尝试在settings.xml中加入以下内容:

1
2
3
4
5
<mirror>
<id>glassfish</id>
<url>http://maven.dyndns.org/glassfish/</url>
<mirrorOf>*</mirrorOf>
</mirror>

其中的“http://maven.dyndns.org/glassfish/”包含有我需要的artifact “/org/glassfish/javax.enterprise.deploy/10.0-SNAPSHOT”。

问题解决。

Added@20100622:

我今天再次遇到这个问题。问题的原因应该是我们本地使用的maven repository(公司自己的)没有包含错误中的相关artifact(对于今天的错误来说:是“org.glassfish.javax.enterprise.deploy.10.0-SNAPSHOT”),则会导致这个问题。解决的方法是:1.按照上面提到的方法,指定包含该artifact的mirror site,则可以得到该artifact;2. 修改之后运行maven编译,可能报一些公司内部的artifacts找不到。这是正常的:因为指定的mirror site并不包含这些artifacts。这时,将以上mirror site设置去掉,再编译,就没有问题了。

Comments