2009-07-04 61 views
5

有一個巡航控件插件用於檢查快照依賴關係的更改,如果需要則觸發構建。這涉及到使用Maven嵌入器下載依賴關係,然後檢查本地存儲庫中快照文件的時間戳。這工作正常,但涉及下載所有父母和依賴關係來檢查一些時間戳。在持續集成服務器上檢查Maven快照依賴關係更改

我正在使用分佈式CI系統(例如Bamboo/Buildforge),並且希望避免下載整個依賴關係層次結構來檢查是否需要構建。可以通過檢查遠程存儲庫上的maven-metadata.xml來確定快照依賴項的構建日期。

有沒有任何插件或工具來簡化這個過程?

+0

你的意思是你正在建立一個分佈式CI系統? – 2009-08-17 05:11:09

+0

不,我使用Buildforge作爲CI系統,每個構建都可以在任意代理上進行,並且我希望避免解決整個Maven依賴關係層次結構,以確定是否有任何快照發生了更改。這樣做的信息位於存儲庫的maven-metadata.xml文件中。我正在尋找避免自己處理這些文件的工具。 – 2009-08-17 11:29:44

回答

1

查找這些插件它看起來像Mercury提供了更高級別的API我一直在尋找。

Mercury提供了一種實現中立的方式來訪問基於GAV的存儲庫,包括AV存儲庫,如OSGi。 OSGi訪問尚未實現。通過訪問,我的意思是從存儲庫中讀取工件和元數據,並將工件寫入存儲庫,元數據通過寫入來更新。

所有調用都接受一組請求作爲輸入並返回一個隱藏getResults的對象,通常是一個映射< queryElement,Collection> response。響應對象具有方便methos hasExceptions(),hasResults(),getExceptions(),getResults()

其中一個關鍵構建塊是僞影的數據的層次結構:

  • ArtifactCoordinates - 是真正的3個組分GAV
    • ArtifactBasicMetadata - 是座標加上類型/分類器加上方便的方法,如散列計算和這樣
  • ArtifactMetadata增加依賴對象的列表,捕獲爲ArtifactBasicMetadata
  • DefaultArtifact實現工件接口,並添加pomBlob(字節[])和文件,它指向實際二進制
2

假設你使用maven作爲你的構建過程,你需要一個插件來做檢查和條件構建。

我不知道任何maven插件,會做你想要的。然而, 你應該可以湊齊一對插件來達到同樣的效果。

使用Exec插件與 「wget的」 獲取的Maven的metadata.xml中。 然後使用xslt插件將生成的XML轉換爲布爾值,該布爾值將指示是否發生更新。您需要XPath到// metadata/versioning/lastUpdated節點並將其與當前日期和時間進行比較。最後,您需要檢查生成的轉換後的XML,以確定是否應繼續構建。

http://mojo.codehaus.org/plugins.html