maven - maven 如何处理多个 <repository> 配置?

标签 maven maven-3

我对 maven 越来越习惯了。但是还是有些问题。

我有多个 <repository>在我的 pom.xml .

  • 下载 Artifact 时,Maven 将如何处理这些存储库?会按申报顺序搜索吗​​?
  • 除了明确声明的,maven 还会检查默认的 central repo 在 http://repo.maven.apache.org/maven2/ ?
  • 如果在 explicitly configured repo 中找不到某些内容,maven 会回退到默认的中央仓库吗?
  • 使用多个 repos 好不好?我有点担心不一致。

  • 以下是<repositories>我的 pom.xml 部分:
    <repositories>
        <repository>
            <id>ibiblio-central-repo</id>
            <layout>default</layout>
            <name>ibiblio-central-repo</name>
            <releases>
                <checksumPolicy>warn</checksumPolicy>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>http://maven.ibiblio.org/maven2/</url>
        </repository>
    
        <repository>
            <id>oschina-central-repo</id>
            <layout>default</layout>
            <name>oschina-central-repo</name>
            <releases>
                <checksumPolicy>warn</checksumPolicy>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>http://maven.oschina.net/content/groups/public/</url>
        </repository>
    
        <repository>
            <id>oschina-central-repo-3rd-party</id>
            <layout>default</layout>
            <name>oschina-central-repo-3rd-party</name>
            <releases>
                <checksumPolicy>warn</checksumPolicy>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
        </repository>
    </repositories>
    

    最佳答案

    How will maven handle these repos when downloading artifacts? Will it search by the declaration order?



    作为合并设置一部分的声明顺序(请参阅下一个答案)。我找到了 this提供更多详细信息的 JIRA 票证。

    Besides the explicitly declared ones, will maven still check the default central repo at http://repo.maven.apache.org/maven2/?



    是的,因为它将由 Maven super POM 提供,它是所有 Maven Pom 的隐式父级(here 官方示例),除非在您的 settings.xml 中指定(如果您覆盖 super POM 中指定的存储库 ID)。您可以使用 Maven 帮助插件获取 effective settings Maven 将应用于您的构建和 effective pom maven 实际上会(有效地)运行。
    如文档所示 here , repositories元素被继承。

    If something cannot be found within the explicitly configured repo, will maven fallback to the default central repo?



    如上。此外,您还可以通过任何已配置的 Maven mirror 来影响此机制。 .例如,您可以将 Maven 重定向到您公司的存储库(见下文),而不是查找默认存储库。

    Is it good to use multiple repos? I am kind of worried about inconsistency.



    您可能不需要很多已配置的存储库,但如果默认存储库未提供您要查找的依赖项,则可能需要多个。一个好的方法是拥有一个企业 Maven 存储库(即 Artifactory、Nexus)并使您的本地设置仅指向它。然后,将内部 Maven 存储库配置为以集中(和受管控)方式指向其他存储库。

    关于maven - maven 如何处理多个 <repository> 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34238196/

    相关文章:

    maven - 如何在 Clojure 中使用本地依赖项?

    java - 在IntelliJ中重新导入库

    maven - 将 GPG 加密凭证(或特定环境变量)与 boot-clj 和 s3-wagon-private 一起使用

    maven-2 - 如果调用迭代,maven appassembler 插件不包含当前工件

    java - 未找到类异常hadoop

    maven - 关于如何为前端应用程序创建 webjar 的分步指南?

    java - 无法通过maven脚本部署ear应用程序

    java - 指定 SNAPSHOT 版本时无法解析导入 POM

    java - Maven : Attaching multiple artifacts

    java - Maven - 在 Quickstart Archetype 中更改 jUnit 版本