偶尔maven会抱怨在构建另一个将其作为依赖项的项目时,在本地存储库中找不到本地构建和打包的特定依赖项.我们收到如下错误:
无法在项目X上执行目标:无法解决项目X的依赖关系:未能在[archiva repository]中找到Y缓存在本地存储库中,在内部更新间隔过去或强制更新之前,不会重新尝试解析 - >
其中X是正在构建的项目,而Y是所谓的缺失工件.如果您查看本地存储库,那么工件就在那里.此工件从未安装在我们的archiva存储库中,因此问题纯粹基于本地存储库.
我们在settings.xml中尝试了各种配置文件,当然还有"mvn -U".也没有任何好处,也不应该,因为这个工件永远不会比本地存储库更进一步.
似乎工作的唯一两件事是等待很长时间,直到maven智能化,或完全删除本地存储库.据推测,等待选项与上述更新间隔有关.
我们在maven 3.0.2和3.0.3中遇到过这个问题.我们正在使用Archiva 1.0.3(但这不应该是一个因素).任何帮助将不胜感激.
Flo*_*rer 34
由于此处的选项对我不起作用,我将分享我是如何解决它的:
我的项目有一个父项目(有自己的pom.xml),它有许多子模块,其中一个(A)与另一个子(B)有依赖关系.当我mvn package在A中尝试时,它没有用,因为B无法解决.
mvn install 在父目录中执行完成了该工作.在那之后,我可以mvn package在A里面做,然后才能找到B.
Jon*_*Jon 16
即使在脱机模式下,如果依赖项存在_remote.repositories标记,maven也会检查远程存储库.如果需要在脱机模式下运行,则可能需要删除这些文件.
下面的简单shell命令删除这些标记文件.如果您只为机器使用离线模式,则可以安全地执行此操作.我不会在需要从网络上下载文件的机器上执行此操作.
我在与Web断开连接的构建服务器上使用了此策略.我们必须将存储库传输到它,删除标记文件,然后以脱机模式运行.
在Linux/Unix上,您可以通过以下方式删除远程存储库标记文件:
cd ~/.m2
find . -name "_remote.repositories" -type f -delete
Run Code Online (Sandbox Code Playgroud)
Maven记得什么时候没找到什么东西.关键是"在内部更新间隔过去或强制更新之前,不会重新尝试解决 - >"
快速解决方案是删除问题工件的本地"repository"子目录 - 假设您已修复问题.:)
mvn -U 将强制从远程存储库更新 - 再次,假设您现在已使用所述工件填充远程.
当这件事发生在我身上时,是因为我从模板中盲目地复制了我的settings.xml,它仍然有空白<localRepository/>元素.这意味着在解析依赖项时没有使用本地存储库(尽管您安装的工件仍然放在默认位置).当我用<localRepository>${user.home}\.m2\repository</localRepository>它替换它开始工作.
对于*nix <localRepository>${user.home}/.m2/repository</localRepository>,我想是的.
| 归档时间: |
|
| 查看次数: |
113362 次 |
| 最近记录: |