2011-01-07 87 views
3

考虑:使用哈德森/蚂蚁常春藤发布到存储库不更新本地缓存

  • 大厦。
  • 常春藤缓存超时设置为5分钟。
  • 常青藤资源库包含项目A版本2.2.2和项目B版本1.1.1。
  • 项目B依赖于项目A.

活动:

  1. API做出改变来就A项目
  2. 相关变化对B项目
  3. 项目A版本由2.2 .3被构建并发布到存储库。
  4. 5分钟后,建立了Project B 1.1.2版。
  5. 项目B失败,仍然从常春藤缓存拉项目A版本2.2.2。
  6. 5分钟后,B项目将建立正确,与项目A版本2.2.3

我看了,但没有看到一个明显的解决方案(除了不缓存?)。是否有发布的设置将更新本地缓存和回购?你需要明确发布到两个?

回答

0

只是猜测:如果A和B建在同一台机器上,会做一个<常春藤:解决refresh =“true”>在A的构建刷新缓存?如果A和B建立在不同的机器上,这当然没有帮助,当然......

+0

我想你错过了一个关键词“在最后做一个[?]”,这是非常悬念。 – Instantsoup 2011-02-10 15:10:06

0

一种解决方案,类似于(但不是缓存)不缓存是通过设置以下常春藤属性:

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。模式是默认设置的内置属性。在这个例子中,我在这里引用它们,但我不需要做任何其他特殊的努力来设置它们(它们已经包含正确的默认值)。

我希望其中一种方法可以解决您的问题。那些是现在想到的唯一两种可能的解决方案。

相关问题