【问题标题】:Does Ivy have different resolution behavior depending on status attribute?常春藤是否有不同的解析行为取决于状态属性?
【发布时间】:2011-08-02 16:07:07
【问题描述】:

我的同事指出了维护我们的工件的一个缺陷(对 Ivy 来说还是有点新):

发布版本被标记为“集成”,这意味着它正在重新检查每个版本的新版本,即使它已经缓存了依赖项,也会减慢构建速度。

这对我来说没有多大意义,因为我认为 Ivy 在决定要交付的版本之前仍然需要检查 repo 中的内容。因此,我决定对此进行一些研究,以准确了解使用不同状态值标记库的效果。 不过,我在文档中或在网上找不到太多信息。我错过了什么? 有人可以解释一下吗?

谢谢

【问题讨论】:

    标签: ivy


    【解决方案1】:

    状态只是一个字符串,可以为 ivy 定义。它们不影响工件本身的解析。它对默认检索没有影响。它只是一个神器的标记。

    Status:

    修订状态 模块的状态表示模块的稳定性 可以考虑改版。可以用来巩固地位 模块的所有依赖项,以防止使用 模块发布中依赖项的集成修订。

    ivy中默认定义了三种状态:

    integration: revisions builded by a continuous build, a nightly
    

    build 等等都属于这一类 里程碑:已向公众发布但未实际发布的修订 完属于这个类别 发布:经过全面测试和标记的修订版 类别

    你需要 declare the dependency as changing or the resolver definition来实现你同事提到的:

    工件的变化 一些人,尤其是那些来自 maven 2 的人 土地,喜欢使用一个特殊的修订来处理经常更新的 模块。在 maven 2 中,这被称为 SNAPSHOT 版本,有些人认为 它有助于节省磁盘空间,只保留一个版本的高 您可以在开发过程中进行的中间构建数量。

    Ivy 以“改变 修订版”。一个不断变化的修订版就是:常春藤的修订版 应该考虑到工件可能会随着时间而改变。处理 这个,你可以指定一个依赖作为改变 依赖标签,或者使用changeingPattern和changeingMatcher 解析器上的属性以指示哪个修订或组 修订应视为更改。

    一旦 Ivy 知道某个版本正在更改,它就会跟随这个 避免过于频繁地检查存储库的原则:如果模块 元数据没有改变,它将考虑整个模块 (包括工件)未更改。即使模块描述符 文件已更改,它将检查模块的发布数据以 看看这是否是同一版本的新出版物。那么如果 发布日期已更改,它将检查工件的最后 修改时间戳,并相应地下载它们。

    因此,如果您想使用更改版本,请使用发布任务 发布您的模块,它将负责更新发布 日期,一切都会正常工作。并记得设置 checkModified=true" 也在你的解析器上!

    【讨论】:

      猜你喜欢
      • 2011-03-18
      • 2013-07-13
      • 2011-02-14
      • 2013-05-31
      • 2012-09-17
      • 2015-12-04
      • 2015-10-28
      • 2018-04-04
      相关资源
      最近更新 更多