【问题标题】:Importing .m2 repository into Artifactory fails将 .m2 存储库导入 Artifactory 失败
【发布时间】:2013-08-15 21:10:09
【问题描述】:

免责声明 - 跟我说话吧!

我是 Artifactory 和 Maven 的完整 n00b。我已经搜索了我可以在网上找到的所有内容,并且真的找不到任何其他应该很容易导入的东西!正因为如此,当我不认为的时候,我很难找到帮助。

我毫不怀疑这是因为我对 Maven、Artifactory 和 Nexus 缺乏了解。我只是不知道该怎么做才能修复它。旧机器有 Maven 并指向一个 Nexus 存储库。

假设

我的理解是 Maven .m2 文件夹应该是 Maven 结构的仓库,应该可以导入?

导出 .m2 目录

我已经 rsynch 传输了整个 .m2 目录。这是.m2目录的sn-p,只看antlr:

.m2/
|
| - settings.xml
| + repository/
|   |
|   + antlr/
|     |
|     + antlr/
|       |
|       + 2.7.7/
|         |
|         - contains jars, pom, sha1 files
|
|
| + org/
|   |
|   + antlr/
|     |
|     + antlr-master/...
|     + stringtemplate/...
|     + antlr-runtime/
|       |
|       + 3.1.3/
|         |
|         - contains poms, sha1, jars

所以,我想知道,这真的支持 Maven2 布局吗?看起来有些罐子不属于 org.package 格式。以上与here的导入布局格式不匹配吗?据我所知,确实如此。

日志只显示 “未找到存储库”

我试过了

  • 指向那个根.m2文件夹,
  • 指向子文件夹如repository/org
  • 压缩整个.m2文件夹吧,
  • 将其压缩到不同的子文件夹,例如 org 文件夹
  • 我试过拿出一件物品,指着蚂蚁……

似乎没有任何效果。我启用了详细日志,我知道它会重定向到导入导出日志,并且应该提供更多信息。它所说的只是没有找到存储库。

我不知道该指向哪里或该做什么。非常感谢任何帮助!

【问题讨论】:

    标签: maven artifactory


    【解决方案1】:

    有两种选择:

    1. 导入许多存储库。为此,您需要配置存储库和与存储库名称匹配的目录,在这些目录下可以找到 groupId 目录。因此,假设您有一个名为“repository”的存储库,您将指向 .m2

    2. 导入单个存储库的内容。为此,您选择现有存储库并指向内容(存储库)的根目录。

    【讨论】:

    • 谢谢,这帮助我指明了正确的方向。知道指向.m2 是正确的操作,我开始更多地反对(上面的#1)。我搞砸的是我将 "Target Local Repository" 设置为 "All Repositories" 我创建了一个 legacy-local 存储库,然后选择它作为目标导入到,随着时间的推移,我们会适当地重新组织它。
    【解决方案2】:

    我认为你问错了问题。无需将.m2 导入 Artifactory。通常,您的工具链应该以这种方式工作:

    • IDE:创建源代码、编译文件、生成 JAR 用于开发。
    • Maven:搜索和下载库,构建具有定义生命周期的工件。
    • Artifactory / Nexus:部署自己创建的工件,以便其他人使用。从公共镜像/代理存储库以加快下载速度。

    所以我不明白你为什么应该使用 m2 的导入到 Artifactory 或 Nexus。执行以下步骤以使链条正常工作。

    1. 设置 Artifactory / Nexus,使它们连接到 Internet。然后,当您请求 Artifactory / Nexus 获取 log4j 时,它应该会自动下载并为您缓存。
    2. 确保您设置的存储库管理器作为镜像包含在您的 Maven 安装的 settings.xml 中。详情请参阅documentation of settings

    当您现在使用 Maven 进行构建时,将完成以下操作:

    1. Maven 在其本地 .m2 存储库中搜索构建所需的资源(插件和库)。
    2. 如果没有找到,它会转到镜像并在那里搜索。这是您本地安装的 Artifactory 或 Nexus,现在可以在自己的数据库中搜索。
    3. 如果资源也没有找到,则会在世界上已知的存储库中搜索(并下载)。
    4. 找到的资源现在存储在您的 Artifactory 或 Nexus 中,因此当其他人使用相同的存储库管理器时,他们会立即交付。
    5. 最终缓存在本地 Maven 仓库.m2

    【讨论】:

    • 在 Artifactory 中,您可以轻松地从 UI 生成所需的 Maven settings.xml,无需纠结于 Maven XML 圆顶球。顺便说一句,Nexus 是如何潜入这个讨论的?
    • @JBaruch Nexus 之所以出现是因为我们要从那里迁移。
    • @mliebelt 谢谢,工作流程有帮助。有两件事促使我导入:1. 遗留依赖项并担心它们可能不再存在(可能不是真正的问题?) 2. 我们的本地/自己的工件,确保它们被存储;了解我们应该能够再次构建和存储。最后,我被要求迁移存储库,包括移动现有的工件。我无法复制 Nexus 库,因为请求一直超时。但如果一切都应该在配置后正确下载,我同意,我可能不需要导入。
    • @mliebelt 根据您的 cmets 在这里,我最终找到了 this post,它建议您是否要导入,暂时将它们放入旧存档中。这让我可以让它们进入并解决,但我们会保持干净。
    猜你喜欢
    • 2017-04-07
    • 2020-03-04
    • 2022-01-21
    • 2021-11-08
    • 2017-04-04
    • 2011-11-02
    • 1970-01-01
    • 2012-11-09
    • 2012-05-08
    相关资源
    最近更新 更多