gpt4 book ai didi

maven 找不到我的本地 Artifact

转载 作者:行者123 更新时间:2023-12-03 09:00:18 24 4
gpt4 key购买 nike

我似乎无法运行 mvn -o package因为它提示

The repository system is off line but the artifact com.liferay.portal:util-bridges:jar:6.1.20 is not available in the local repository.



但我检查了我的本地存储库,那里确实存在该 Artifact 。我还尝试了在 settings.xml 文件中将 updatePolicy 设置为 never 的解决方案,但未能奏效。

最佳答案

在 Maven 3.0.x 之前,Maven 不跟踪本地存储库中文件的来源。

这可能会导致构建问题,特别是如果您正在构建的东西列出了(现在已经死了)非常无聊的 java.net2 存储库......该存储库不仅更改了已发布的 Artifact (非常糟糕和邪恶的做法),而且还在以下位置发布了 Artifact 与中央 Artifact 的坐标相同但内容不同(令人难以置信的邪恶)

因此,您可以进行构建工作(因为您有来自中央的 commons-io:commons-io:2.0)删除您的本地存储库并且构建失败(因为您现在从 java.net2 获得了 commons-io:commons-io:2.0是一个完全不同的 Artifact ,在 pom 中具有不同的依赖关系),反之亦然。

上述情况是使用 maven 存储库管理器的驱动因素之一,因为它允许您控制向下游公开的存储库的子集以及从多个存储库解析 Artifact 的顺序(通常称为路由规则)

无论如何,当 maven 切换到 Aether 作为存储库访问层时,决定开始跟踪 Artifact 的来源。

因此,对于 Maven 3.0.x,当从存储库下载 Artifact 时,maven 会留下 _maven.repositories file 记录文件的解析位置。如果您正在构建一个项目并且存储库的有效列表不包含解析 Artifact 的位置,那么 Maven 会认为 Artifact 不在缓存中,并将寻求重新解析 Artifact 。 ..

但是 3.0.x 中存在许多错误...最关键的是如何offline被处理... 即:离线时,maven 3.0.x 认为没有存储库,因此总是会发现与 _maven.repositories 不匹配文件!!!

Maven 3.0.x 的解决方法是从本地缓存中删除这些文件,例如

$ find ~/.m2/repository -name _maven.repositories -exec rm -v {} \;

副作用是您失去了 Maven 3.0.x 试图提供的保护。

好消息是 Maven 3.1 将有所需的修复(如果我们能够一起行动并发布门外)

使用 Maven 3.1 在离线模式下 _maven.repositories文件被(半)忽略,并且还有一个选项可以忽略在线构建的文件(称为遗留模式)

在这个时间点(2013 年 6 月 1 日),第 4 次尝试削减符合法律和测试要求的版本正在进行中......所以,假设第 4 次是幸运的,我希望看到 3.1.0-alpha -1 在 3-4 天后发布......但考虑到我们希望给 3.1 中的更改足够的时间来浸泡以确保使用构建不会中断,它可能会更长(暴露的 API 发生了变化(通过意外 - 站点和依赖项插件需要 API)插件作者依赖(即使他们不应该拥有)所以有潜力,尽管我们认为我们已经涵盖了所有基础)

希望能回答您的问题(也许还有一些您不知道的问题;-))

关于maven 找不到我的本地 Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16866978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com