有一个cruisecontrol插件可检查快照依赖项的更改,并在需要时触发构建。这涉及使用Maven嵌入器下载依赖项,然后检查本地存储库中快照文件的时间戳。这工作正常,但涉及下载所有父项和依赖项以检查一些时间戳。
我正在开发分布式CI系统(例如Bamboo / Buildforge),并希望避免下载整个依赖关系层次结构以检查是否需要构建。可以通过检查远程存储库上的maven-metadata.xml来确定快照依赖项的构建日期。
是否有任何插件或工具可以简化此流程?
答案 0 :(得分:2)
假设您使用maven作为构建过程,您需要一个插件来执行检查和条件构建。
我不知道任何maven插件会完全符合您的要求。然而, 你应该能够拼凑几个插件以获得相同的效果。
将 exec插件与“wget”一起使用以获取maven-metadata.xml。 然后使用 xslt插件将生成的XML转换为布尔值,该值将指示是否发生了更新。您需要XPath到// metadata / versioning / lastUpdated节点,并将其与当前日期和时间进行比较。最后,您需要检查生成的转换后的XML,以确定是否应该继续构建。
找到这些插件答案 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 [])和文件