【问题标题】:How do I tell ivy4r to stay offline?我如何告诉 ivy4r 保持离线状态?
【发布时间】:2011-08-07 08:04:39
【问题描述】:

我们最近从 Ant 切换到 Buildr 来构建我们的项目。我们使用 Ivy 进行依赖管理,使用 ivy4r Buildr 扩展。我们在办公室有一个本地存储库,用作公共工件的缓存,并且我们还发布了我们自己的工件。

现在的问题是:我希望能够在我无法访问 office 存储库时构建我的项目。 Buildr 有一个标志告诉它离线工作 (-o),但 ivy4r 似乎没有考虑到这一点。有什么办法可以让 Ivy 不尝试下载工件?我已经在我的机器上的缓存中提供了它们。

【问题讨论】:

    标签: ivy buildr


    【解决方案1】:

    将缓存超时设置为永恒

    您可以将 cache 属性 ${ivy.cache.ttl.default} 设置为永恒,这将设置 TTL: 以便不会检查存储库是否有新修订。

    您可以通过使用以下参数调用 ant 来实现此目的:

    ant -Divy.cache.ttl.default=eternal build
    

    这是来自documentation

    为已解决的修订缓存定义 TTL(生存时间)规则。什么时候 Ivy 解决了动态版本约束(如 latest.integration 或 版本范围),它可以存储分辨率的结果(如 latest.integration=1.5.1) 给定时间,称为 TTL。代表着 Ivy 将重用此动态修订解析结果,而无需 在 TTL 期间访问存储库,除非正在运行 在刷新模式下解析。

    ...

    TTL 持续时间也可以设置为“永恒”,在这种情况下为一次 已解决 始终使用修订版,除非在刷新中解决 模式。

    其他参考资料:

    为解析任务设置 UseCacheOnly

    resolve taskuseCacheOnly属性,可以用来

    强制[s] 解析器只使用它们的缓存而不是它们的实际 内容

    例子:

    <ivy:resolve file="path/to/ivy.xml" useCacheOnly="true/>
    

    【讨论】:

    • 我没有朝这个方向搜索。将尝试一下,看看会发生什么。谢谢!
    • 乍一看,这是可行的。但是我们有不断变化的工件。关于如何不为他们上网的任何想法?
    • 将它们发布到本地文件系统并使用文件系统解析器从那里检索。
    • 这就是我们最终所做的。根据离线标志,我们调整 ivy4r 设置以使用不同的解析器链。
    • 要使 TTL 生效,不要忘记将解析器的 checkmodified 属性设置为 false。我花了几个小时试图弄清楚为什么它不起作用。有关详细信息,请参阅this
    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 2018-02-28
    • 1970-01-01
    • 2014-01-02
    • 2012-05-17
    • 2019-08-23
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多