2014-10-06 156 views
12

我想知道究竟是什么Maven的在-U相做。mvn -U究竟是如何工作的?

的参数排序强制检查远程仓库更新,如果需要的话,更新在我们的项目中使用更新的依赖关系的本地Maven仓库。

如上所述:

-U --update-snapshots Forces a check for updated releases and snapshots on remote repositories 

但是,究竟是做? Maven首先下载了所有的远程仓库,并在本地决定他们需要更新,或者决定不首先下载它们?是否有一些应该知道的角落案件?

我的Maven的版本是:

Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T16:51:42+03:00) 
Maven home: /usr/local/Cellar/maven/3.2.2/libexec 
Java version: 1.7.0_60, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac" 

回答

10

它只能通过您的项目中引用的假象或依赖关系来完成。

最后检查时间戳存储本地工件元数据(在你的本地仓库)内,所以Maven可以应用不同多久检查的基础上的更新策略。快照的默认更新时间间隔是“每日”。

另见updatePolicy在Maven的settings.xml中远程仓库。

+0

感谢尤金。我仍然不确定检查更新是如何完成的。你能否详细说明一下? – Stas 2014-10-06 21:33:41

+6

更新会通过发送每一个工件远程Maven仓库的HTTP请求,然后比较Maven的本地缓存神器神器时间戳(又名本地Maven仓库)进行检查。 – 2014-10-07 14:07:33

+0

太好了,那正是我想知道的。 – Stas 2014-10-07 20:23:20