Maven尝试从maven中心获取shrinkwrap-bom,而不是配置存储库

时间:2017-03-13 12:43:57

标签: java hibernate maven-3

我正在尝试使用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获取,无论我的存储库设置如何?

4 个答案:

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