常春藤发布到存储库不会更新本地缓存
Posted
技术标签:
【中文标题】常春藤发布到存储库不会更新本地缓存【英文标题】: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。事件:
-
对项目 A 进行了 API 更改。
对项目 B 进行了相关更改。
项目 A 版本 2.2.3 已构建并发布到存储库。
不到 5 分钟,项目 B 版本 1.1.2 构建完成。
项目 B 失败,仍然从 Ivy 缓存中提取项目 A 版本 2.2.2。
5 分钟后,项目 B 将正确构建,项目 A 版本为 2.2.3
我看过但没有看到明显的解决方案(除了不缓存?)。是否有发布设置会更新本地缓存和存储库?是否需要明确发布到两者?
【问题讨论】:
【参考方案1】:只是推测:如果 A 和 B 构建在同一台机器上,是否会在 A 构建结束时执行
【讨论】:
我认为你错过了一个关键词“在结尾处做一个 [?]”,这非常悬念。 @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.dir、ivy.local.default.ivy.pattern和ivy.local.default.artifact .pattern 是默认设置的内置属性。我在这个例子中引用了它们,但我不需要做任何其他特别的努力来设置它们(它们已经包含正确的默认值)。
我希望其中一种方法可以解决您的问题。这是目前唯一想到的两种可能的解决方案。
【讨论】:
【参考方案3】:在项目B的ivy文件中,需要将依赖的changeing属性设置为true。
<dependency org="org.example" name="A" revision="latest.integration" changing="true" />
See the ivy documentation
【讨论】:
以上是关于常春藤发布到存储库不会更新本地缓存的主要内容,如果未能解决你的问题,请参考以下文章