Java Maven尝试从Maven central(而不是配置的存储库)获取包覆面提取bom表

Java Maven尝试从Maven central(而不是配置的存储库)获取包覆面提取bom表,java,hibernate,maven-3,Java,Hibernate,Maven 3,我正在尝试使用maven版本3.3.9和自定义maven存储库构建我的maven项目 使用Maven3.1.0构建项目,它运行、下载依赖项并通过测试 删除所有本地依赖项并将Maven升级到3.3.9后,在下载阶段出现以下错误: failed to execute goal on project ... could not resolve dependencies ... failed to collect dependencies at org.hibernate:hibernate-vali

我正在尝试使用maven版本
3.3.9
和自定义maven存储库构建我的
maven
项目

使用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获取数据?

我也遇到了同样的问题。 我们的设置使用Nexus 3存储库管理器。Maven Central在Nexus中作为代理回购协议设立

我犯了在settings.xml的repositories部分列出central的错误

<repositories>
...
    <repository>
        <id>central</id>
        <url>http://<MY_NEXUS_HOST>:8081/repository/maven-central/</url>
    </repository>
</repositories>

...
中心的
http://:8081/repository/maven central/
这适用于大多数依赖项。但是它不适用于org.jboss.shrinkwrap:shrinkwrap bom。只有这个

解决方案是将Maven Central指定为镜像:


中央代理
中央代理
http://:8081/repository/maven central/
中心的

问题在于范围导入的可传递依赖关系。 我通过在pom.xml中添加以下依赖项解决了hibernate validator 6.0.13.Final版本的问题:

        <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>

org.jboss.shrinkwrap

他们承诺在Maven版本3.6.3中修复此问题。

作为一个补充-只想提及的是,给定的依赖项应该放在dependencyManagement

标记中…因为给定的工件确实存在于中。我说我使用的是自定义存储库,而不是中心。。。而旧版本的maven则不适用于问题的其他信息,这些信息属于问题(编辑它),而不属于推荐(可能会被删除)。我为您添加了它。如果Maven编写“未知主机repo.Maven.apache.org”,它会尝试联系MavenCentral,但无法联系。您的新版本可能找不到settings.xml。此外,您还可能在删除本地存储库以重新开始之前将其他工件安装到本地存储库中。它确实会从自定义存储库下载其他工件。我在第一句话中确实说过回购是习惯性的……现在,我也遇到了这个问题,非常感谢你的回答——但是你知道这里发生了什么/为什么会发生这种情况吗?假设你使用的外部依赖项不是存储在central中,而是存储在自己的回购中。此依赖项的pom.xml将在其部分中声明此repo。现在你想在公司防火墙后面使用它,所以你要设置你的nexus镜像。您不能编辑工件的pom并重写其元素。这就是为什么要指定镜像。这就是为什么它出现在settings.xml中而不是pom.xml中。这是自定义的设置。应该在镜像部分指定在其自身地址下不再可见的存储库。这听起来像是一个bug,因为唯一要查找的回购是中心的。实际上,包覆膜式包装bom的pom不包含
存储库
部分,而只包含
分发管理
部分,他们的父母也没有(据我所知)可悲的是,这个问题被标记为没有解决办法。但至少这个问题允许maven维护人员分享他们的观点。这应该是一个评论,而不是一个单独的答案
        <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>