Maven 如何知道哪个存储库用于依赖项?

Geo*_*rge 9 java repository maven

首先,我搜索了谷歌,但似乎找不到答案。如果这是一个明显的答案,我深表歉意。

在 Maven 中,我们可以定义 0 个或多个存储库来查找资源。存储库可以在 settings.xml 或 pom.xml 中定义。默认情况下,如果您没有定义存储库,则所有内容都将来自存储库名称“central”,这只是 maven 维护的默认存储库。

下面的设置 pom 片段来自 jboss eap 示例应用程序。当我进行 mvn clean 安装时,我可以看到有些东西是从中央拉取的,有些是从 jboss 存储库拉取的。依赖标签中似乎没有任何内容告诉maven哪个存储库包含依赖项,那么它是如何决定的呢?是否与依赖项中的组 ID 相关联,或者 Maven 是否只是逐一检查所有存储库,直到找到第一个包含该 jar 的存储库?

<dependencies>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.spec.javax.xml.bind</groupId>
        <artifactId>jboss-jaxb-api_2.3_spec</artifactId>
    </dependency>
</dependencies>


   <repositories>
        <repository>
            <id>jboss-enterprise-maven-repository</id>
            <url>https://maven.repository.redhat.com/qa/</url>
        </repository>
        <repository>
            <id>jboss-enterprise-maven-repository-ea</id>
            <url>https://maven.repository.redhat.com/earlyaccess/all/</url>
        </repository>
        <repository>
            <id>jboss-public-repository-group</id>
            <name>JBoss Public Maven Repository Group</name>
            <url>https://repository.jboss.org/nexus/content/groups/public/</url>
        </repository>
    </repositories>
Run Code Online (Sandbox Code Playgroud)

cha*_*_pl 5

我们看一下官方文档

按以下顺序查询远程存储库 URL 中的工件,直到返回有效结果:

  1. 有效设置:
  • 全球的settings.xml
  • 用户settings.xml
  1. 本地有效构建POM:
  • 本地pom.xml
  • 父 POM,递归
  • 超级聚甲醛
  1. 从依赖路径到工件的有效 POM。

对于每个位置,首先按照构建配置文件简介中概述的顺序查询配置文件中的存储库。

从存储库下载之前,会应用镜像配置。

有效的设置和本地构建 POM,考虑到配置文件,可以使用 mvn help:effective-settings和轻松查看其存储库顺序mvn help:effective-pom -Dverbose


JF *_*ier 4

Maven 只是浏览列表并查看所有存储库。

无法将依赖关系与特殊存储库联系起来。