2011-01-07 85 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。模式是默認設置的內置屬性。在這個例子中,我在這裏引用它們,但我不需要做任何其他特殊的努力來設置它們(它們已經包含正確的默認值)。

我希望其中一種方法可以解決您的問題。那些是現在想到的唯一兩種可能的解決方案。

相關問題