我使用Maven构建了一个项目,该项目引用了Artifactory的工件。此构建设置没有问题,但现在每次从Artifactory存储库中获得新库时,我都会看到此错误。
Caused by: org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException: Unable to read local copy of metadata: Cannot read metadata from '/home/user/.m2/repository/com/cc-spring-hibernate/5.1-SNAPSHOT/maven-metadata-bintray-central.xml': end tag name </body> must match start tag name <hr> from line 5 (position: TEXT seen ...</center>\r\n</body>... @6:8)
at org.apache.maven.artifact.repository.metadata.DefaultRepositoryMetadataManager.resolve(DefaultRepositoryMetadataManager.java:175)
at org.apache.maven.artifact.transform.AbstractVersionTransformation.resolveVersion(AbstractVersionTransformation.java:65)
at org.apache.maven.artifact.transform.SnapshotTransformation.transformForResolve(SnapshotTransformation.java:63)
... 23 more
当我检查了maven-metadata-bintray-central.xml文件时,发现它具有此内容。
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
[调查后,我发现这似乎是由于Artifactory调用http://jcenter.bintray.com/以获取依赖关系,但是HTTP调用返回“ 302 Found”和nginx消息以重定向到HTTPS(https://jcenter.bintray.com/)。
Artifactory是否正在调用jcenter.bintray以获取库的详细信息?如果是这种情况,我们如何配置Artifactory使用https URL或了解http重定向?
此问题与Artifactory有关。 这是因为pom文件中引用了http://jcenter.bintray.com。
<repository>
<id>bintray-central</id>
<name>bintray</name>
<url>https://jcenter.bintray.com</url>
</repository>
我不确定为什么它没有更早失败。我假设jcenter.bintray.com网站上发生了最近的更改,以将302的所有HTTP调用重定向到https。像这样将bintray URL更改为https,删除.m2文件夹中的旧文件并重建即可解决此问题。
<!-- Updated http url -->
<repository>
<id>bintray-central</id>
<name>bintray</name>
<url>https://jcenter.bintray.com</url>
</repository>