1

我是 Maven 的新手,虽然我对 Ant 有经验。我试图了解下载依赖项的过程。假设我定义了两个存储库:

还有一个依赖:

  • 依赖
    • groupId:org.mystuff
    • artifactId:mystuff-core

我的问题:

  1. 我假设必须将依赖项的 groupId 作为其中一个 repo URL 的子路径找到,例如http://repo-one.com/repos/org/mystuff。那正确吗?

  2. 如果是这样,则将 artifactId 作为附加子路径寻找,例如http://repo-one.com/repos/org/mystuff/mystuff-core。那正确吗?

  3. 如果以上两项都是,如果同时存在http://repo-one.com/repos/org/mystuff/mystuff-corehttp://repo-two.com/repos/org/怎么办神秘的/神秘的核心?列出的第一个存储库是否获胜?

  4. 如果我完全偏离了轨道,那么在存储库上查找依赖项的过程是什么?

正如您可能知道的那样,我正在查看现有的 POM 并试图了解它是如何工作的。我已经查看了 Maven 站点上的文档,但到目前为止,我没有看到任何明确说明依赖项如何映射到存储库的内容。

4

1 回答 1

2

Q1。和 Q2。你说的对。

更准确地说,默认情况下(即如果存储库布局未重新定义为非标准布局):工件将在<REPO_URL>/${groupId_with_dot_replaced_by_subdir}/${artifactId}/${version}/${artifactId}-${version}.${extension}

Q3。是的,包含工件的第一个存储库获胜。注意

  • 如果工件不是 SNAPSHOT 并且已经在您的本地存储库中,则不会再次下载。
  • 如果工件是 SNAPSHOT 并且在本地存储库中的时间超过刷新策略指定的时间:它将再次下载。

Q4。这是解释 Maven 存储库布局的博客文章的链接

于 2013-03-27T14:57:35.377 回答