我正在尝试使用Maven版本maven
和自定义maven存储库构建我的3.3.9
项目。
使用Maven 3.1.0
构建项目,它运行,下载依赖项并传递测试。
删除所有本地依赖项并将Maven升级到3.3.9后,在下载阶段出现以下错误:
failed to execute goal on project ... could not resolve dependencies ...
failed to collect dependencies at org.hibernate:hibernate-validator:5.2.4.Final:
failed to read artifact descriptor for org.hibernate:hibernate-validator:jar:5.2.4.Final:
could not transfer artifact org.jboss.shrinkwrap:shrinkwrap-bom.pom:1.2.2 from/to central (...)
Unknown host repo.maven.apache.org
再次注意,我使用的是自定义存储库,而不是Maven Central。
但它适用于较旧版本的Maven,因此为我的存储库配置了settings.xml
,并且工件确实存在于那里。
此外,其他依赖项成功下载,只是这种依赖。
为什么Maven仍在尝试从Maven Central获取,无论我的存储库设置如何?
答案 0 :(得分:2)
我有同样的问题。 我们的设置使用Nexus 3存储库管理器。 Maven Central在Nexus中设置为代理仓库。
我错误地在settings.xml的存储库部分列出了central。
<repositories>
...
<repository>
<id>central</id>
<url>http://<MY_NEXUS_HOST>:8081/repository/maven-central/</url>
</repository>
</repositories>
这适用于大多数依赖项。但是它不适用于org.jboss.shrinkwrap:shrinkwrap-bom。只有这一个。
决议是将Maven Central指定为镜像:
<mirrors>
<mirror>
<id>central-proxy</id>
<name>central-proxy</name>
<url>http://<MY_NEXUS_HOST>:8081/repository/maven-central/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
答案 1 :(得分:0)
问题是具有范围导入的可传递依赖项。 我为hibernate-validator 6.0.13.Final版本解决了它,方法是将以下依赖项添加到我的pom.xml中:
<dependency>
<groupId>org.jboss.shrinkwrap</groupId>
<artifactId>shrinkwrap-bom</artifactId>
<version>1.2.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-bom</artifactId>
<version>2.2.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-bom</artifactId>
<version>2.0.0-alpha-8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
关于Maven Bugtracker的问题: https://issues.apache.org/jira/browse/MNG-6397 他们承诺将在Maven 3.6.3版中对其进行修复。
答案 2 :(得分:0)
作为对 Sergey comment 的补充 - 只想提一下,给定的依赖项应该放在 dependencyManagement 标签中
答案 3 :(得分:0)
SandorRacz 关于创建镜子的建议也对我有用。谢谢!! 因此,在构建时,我的错误日志中出现以下错误:
[ERROR] Non-resolvable import POM: Failure to transfer org.jboss.shrinkwrap:shrinkwrap-bom:pom:1.2.2 from http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact org.jboss.shrinkwrap:shrinkwrap-bom:pom:1.2.2 from/to central (http://repo.maven.apache.org/maven2): HTTPS Required (501) @ org.jboss.arquillian:arquillian-bom:1.1.10.Final,
为了清楚起见,这里是我的 settings.xml 在创建镜像后的样子。 (我希望它可以节省某人的时间)
<profiles>
<profile>
<id>nexus</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<url>http://repo.maven.apache.org/maven2/</url>
<id>central-repo</id>
<layout>default</layout>
</repository>
</repositories>
</profile>
</profiles>
<mirrors>
<mirror>
<id>central-proxy</id>
<name>central-proxy</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
<mirrorOf>central-repo</mirrorOf>
</mirror>
</mirrors>