【问题标题】:maven snapshot updatesmaven 快照更新
【发布时间】:2011-01-10 00:36:14
【问题描述】:

我有一个具有快照依赖项的 Maven 项目。 maven 如何知道快照是否需要更新?它总是更新吗?是基于时间的吗?基于校验和的更新?我知道我可以强制更新,但除此之外,它如何检查?

谢谢, 杰夫

【问题讨论】:

    标签: maven-2 dependencies snapshot


    【解决方案1】:

    根据文档,默认设置是每天只更新一次。那是一天的第一个构建执行的时间。您可以使用 snapshot-policy 元素覆盖此行为。

    • 始终 - 始终检查 Maven 何时启动以获取较新版本的快照
    • 从不 - 从不检查较新的远程版本。可以执行一次关闭手动更新。
    • 每天(默认)- 检查当天的第一次运行(当地时间)
    • interval:XXX - 每 XXX 分钟检查一次

    http://maven.apache.org/maven-settings/settings.html

    【讨论】:

    • 这个链接有点过时了——我试试maven.apache.org/settings.html#Repositories,然后搜索updatePolicy
    • @RoyTruelove 是的,但这并没有真正的帮助。这是该页面上最相关的一行:“此元素指定应该尝试更新的频率。Maven 会将本地 POM 的时间戳(存储在存储库的 maven-metadata 文件中)与远程进行比较。”至于这究竟是什么意思,它打败了我。它会在一天的第一次运行中执行吗?还是在上次下载后 24 小时内完成?
    • 如果使用 m2e 插件,右键单击项目 --> maven---> 更新项目--> 选择强制更新快照/发布就可以了
    • 或 mvn clean install -U 。 -U 表示强制更新快照和版本
    【解决方案2】:

    我有一个具有快照依赖项的 Maven 项目。 maven 如何知道快照是否需要更新?

    Maven 会将本地 POM 的时间戳(存储在存储库的 maven-metadata 文件中)与远程进行比较。例如,请参阅 JBoss 快照存储库中的 hibernate-core-3.5.0-SNAPSHOT

    它总是更新吗?是基于时间的吗?基于校验和的更新?

    这取决于包含快照的repositorypluginRepository 中的updatePolicy。默认是 daily 检查(其他可能的值是 alwaysinterval:X(其中 X 是以分钟为单位的整数)或 从来没有

    当您在内部为正在积极开发的项目使用 SNAPSHOT 时,为内部存储库设置 <updatePolicy>always</updatePolicy> 是很常见的。

    【讨论】:

    • 但是如果您正在处理依赖于 a-snapshot 的项目 b,并且您也在处理 a,那么下载 a 的快照将覆盖您自己的更改
    • @AsafMesika 没错,Eclipse 的 m2 插件具有“工作区分辨率”功能,它仅下载未在 Eclipse 工作区中打开的项目的新快照。煮东西,我还没有找到类似的netbeans解决方案
    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多