检查持续集成服务器上的maven快照依赖项更改

时间:2009-07-04 21:26:21

标签: maven-2 continuous-integration buildforge

有一个cruisecontrol插件可检查快照依赖项的更改,并在需要时触发构建。这涉及使用Maven嵌入器下载依赖项,然后检查本地存储库中快照文件的时间戳。这工作正常,但涉及下载所有父项和依赖项以检查一些时间戳。

我正在开发分布式CI系统(例如Bamboo / Buildforge),并希望避免下载整个依赖关系层次结构以检查是否需要构建。可以通过检查远程存储库上的maven-metadata.xml来确定快照依赖项的构建日期。

是否有任何插件或工具可以简化此流程?

2 个答案:

答案 0 :(得分:2)

假设您使用maven作为构建过程,您需要一个插件来执行检查和条件构建。

我不知道任何maven插件会完全符合您的要求。然而, 你应该能够拼凑几个插件以获得相同的效果。

exec插件与“wget”一起使用以获取maven-metadata.xml。 然后使用 xslt插件将生成的XML转换为布尔值,该值将指示是否发生了更新。您需要XPath到// metadata / versioning / lastUpdated节点,并将其与当前日期和时间进行比较。最后,您需要检查生成的转换后的XML,以确定是否应该继续构建。

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

找到这些插件

答案 1 :(得分:1)

看起来Mercury提供了我正在寻找的更高级别的API。

  

Mercury提供了一种与实现无关的方式来访问基于GAV的存储库,包括AV存储库,如OSGi。 OSGi访问尚未实现。通过访问,我的意思是从存储库中读取工件和元数据,并将工件写入存储库,通过写入更新元数据。

     

所有调用都接受一组请求作为输入并返回一个隐藏getResults的对象,该对象通常是一个map< queryElement,Collection>响应。响应对象具有方便的方法,包括hasExceptions(),hasResults(),getExceptions(),getResults()

     

其中一个关键构建块是工件数据的层次结构:

     
      
  • ArtifactCoordinates - 是真正的3组件GAV      
        
    • ArtifactBasicMetadata - 是坐标加上类型/分类器以及哈希计算等便利方法
    •   
  •   
  • ArtifactMetadata 添加依赖项对象列表,捕获为 ArtifactBasicMetadata
  •   
  • DefaultArtifact 实现工件接口,并添加指向实际二进制文件的pomBlob(byte [])和文件
  •