【问题标题】:Ivy publish to repository doesn't update local cache常春藤发布到存储库不会更新本地缓存
【发布时间】:2011-06-05 14:11:55
【问题描述】:

给定:

  • 使用 Hudson/Ant 构建。
  • Ivy 缓存超时设置为 5 分钟。
  • Ivy 存储库包含项目 A 版本 2.2.2 和项目 B 版本 1.1.1。
  • 项目 B 依赖于项目 A。

事件:

  1. 对项目 A 进行了 API 更改。
  2. 对项目 B 进行了相关更改。
  3. 项目 A 版本 2.2.3 已构建并发布到存储库。
  4. 不到 5 分钟,项目 B 版本 1.1.2 构建完成。
  5. 项目 B 失败,仍然从 Ivy 缓存中提取项目 A 版本 2.2.2。
  6. 5 分钟后,项目 B 将正确构建,项目 A 版本为 2.2.3

我看过但没有看到明显的解决方案(除了不缓存?)。是否有发布设置会更新本地缓存和存储库?是否需要明确发布到两者?

【问题讨论】:

    标签: hudson ivy dependency-management


    【解决方案1】:

    只是推测:如果 A 和 B 构建在同一台机器上,是否会在 A 构建结束时执行 刷新缓存?当然,如果 A 和 B 在不同的机器上构建,那也无济于事......

    【讨论】:

    • 我认为你错过了一个关键词“在结尾处做一个 [?]”,这非常悬念。
    • @Instantsoup:对不起,我忘了转义尖括号。 :-)
    【解决方案2】:

    一种类似于(但不如不缓存)不缓存的解决方案是通过设置以下 ivy 属性来减少事物在缓存中的生存时间:

    ivy.cache.ttl.default                 = 30s
    

    也许现在可以解决您的问题。虽然,它并不比不缓存好多少。

    在我的脑海中,我可能会尝试的另一件事是关闭缓存,然后通过在您的 ivy 设置文件中创建一个指向缓存的文件系统解析器手动重新实现缓存,并且将其放在链条的下方。看起来像这样:

    <ivysettings>
        <settings defaultResolver="all-repositories" />
        <include file="ivysettings-common.xml" />
        <resolvers>
            <chain name="all-repositories" returnFirst="true" >
                ...
                <ibiblio name="ibiblio" m2compatible="true" />
                <filesystem name="manual-cache">
                    <ivy pattern="${ivy.default.ivy.user.dir}/cache/${ivy.local.default.ivy.pattern}" />
                    <artifact pattern="${ivy.default.ivy.user.dir}/cache/${ivy.local.default.artifact.pattern}" />
                </filesystem>
                ...
            </chain>    
        </resolvers>
    </ivysettings>
    

    注意:ivy.default.ivy.user.dirivy.local.default.ivy.patternivy.local.default.artifact .pattern 是默认设置的内置属性。我在这个例子中引用了它们,但我不需要做任何其他特别的努力来设置它们(它们已经包含正确的默认值)。

    我希望其中一种方法可以解决您的问题。这是目前唯一想到的两种可能的解决方案。

    【讨论】:

      【解决方案3】:

      在项目B的ivy文件中,需要将依赖的changeing属性设置为true。

        <dependency org="org.example" name="A" revision="latest.integration" changing="true" />
      

      See the ivy documentation

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 2011-09-07
        • 2013-09-23
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 2016-12-21
        • 1970-01-01
        相关资源
        最近更新 更多