为什么maven在我的本地存储库之前使用我的内部存储库?

sch*_*mmd 6 maven-2 maven

当我在进行开发时,我经常需要更改依赖项,但我还没准备好部署我的更改.例如,我正在研究项目Foo,我意识到我需要向公共库添加一个方法.在将此更改部署到我们的内部存储库之前,我想将更改安装到公共库(mvn install)并重新编译Foo以使用本地存储库中的公共库(请注意,我使用的是所有SNAPSHOT版本).

但是,在mvn install我的公共库之后,当我重新编译Foo时,它不使用新的公共库 - 它继续使用内部存储库中最新的SNAPSHOT公共库.如果我部署更改的公共库,Foo会立即选择它.

如何让maven首先在本地存储库中查找?

更新:当文件安装到本地存储库时,它会得到一个名称foo-1.0.0-SNAPSHOT.jar,但是当我部署它时,它会得到一个时间戳foo-1.0.0-20111104.191316-23.jar.我想这就是为什么每次都会拉动远程工件.知道为什么mvn install不工作mvn deploy?是否与我为部署设置快照存储库这一事实有关?

Rya*_*art 3

默认情况下,Maven 每天检查一次 SNAPSHOT 工件的新版本。当它执行此检查时,它将从远程存储库下载比本地存储库更新的快照。要么您的工件时间戳不同步,并且您正在执行某些操作来覆盖 Maven 的更新策略(例如使用 -U 调用它将 udpatePolicy 设置为“始终”),要么您要安装工件的本地存储库不是“与您随后运行 Maven 的对象相同。您所描述的不是典型的 Maven 行为。为了获得更好的答案,请在您的问题中提供更多详细信息。

您可以寻找一个指标:安装公共工件后,当您下次编译 Foo 时,Maven 是否会再次下载公共工件?如果是这样,那么它确实是从远程获取的,您需要检查您的更新设置。如果没有,那么本地就会发生一些奇怪的事情。